如何从performSelectorInBackground线程更新UITextView?

时间:2011-08-24 23:24:40

标签: iphone multithreading

请查看以下代码,outputConsole是UITextView。

- (IBAction)buttonBuildDown
{
    [self performSelectorInBackground:@selector(processBuildDown) withObject:nil];
}

- (void)processBuildDown
    ...
    [outputConsole setText:outputText];
    ...
    [outputConsole setText:outputText];
}

代码[outputConsole setText:outputText]引发:

  

尝试从主线程以外的线程获取Web锁定   或网络线程。这可能是从一个调用UIKit的结果   次要线程。现在崩溃......

如何解决这个问题?我需要处理一个长时间的操作(大约5秒),并通过UITextView通知用户该过程的状态。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

UIKit不是线程安全的,你应该只更新主线程中的UI元素,使用NSObjects,performSelectorOnMainThread方法执行将在主线程上运行的代码并设置UITextViews文本......

丹尼尔