请查看以下代码,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通知用户该过程的状态。
非常感谢您的帮助!
答案 0 :(得分:3)
UIKit不是线程安全的,你应该只更新主线程中的UI元素,使用NSObjects,performSelectorOnMainThread方法执行将在主线程上运行的代码并设置UITextViews文本......
丹尼尔