iOS更新来自其他类/线程的UI

时间:2013-11-13 12:40:55

标签: ios objective-c multithreading uiviewcontroller uiimage

我有一个名为“MainUI.m”的主“类”/视图控制器,它显示我的应用程序的UI。在这个视图控制器中,我声明了另一个名为“DoActivity.m”的类的实例,所以我可以在我的MainUI中调用一个名为“getFeed”的方法。在方法结束之前,它必须从我的MainUI更新图像。然后该方法再次重复。我的问题是每当我在方法中更新UI时应用程序崩溃:

MainUI* mu = [[MainUI alloc] init];   

-(void)getFeed{
//some tasks here

mu.imageView.image= imageInDoActivity.image;
}

修改

错误说明了

Thread 1: Program recieved signal:'EXC_BAD_ACCESS' 

并在此行代码中突出显示:

mu.imageView.image= imageInDoActivity.image;

修改

我在DoActivity中有一个MainUI属性:

@property MainUI* mu;

但在我的DoActivity构造函数中,我没有初始化所述属性。相反,在MainUI中调用[self.doAct getFeed]之前,doAct是

@property DoActivity* doAct;

我设置

self.doAct.mu = self;
在MainMU中

,以便DoActivity知道它应该更新调用它的类的UI。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您需要在主线程上执行UI内容:

-(void)getFeed{
    //some tasks here

    dispatch_async(dispatch_get_main_queue(), ^{
        mu.imageView.image= imageInDoActivity.image;
    });
}

我不确定这是否真的是导致崩溃的原因。崩溃日志真的很有帮助。