如何从performSelectorInBackground线程更新UITextView



请看下面的代码,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通知用户关于进程的状态。

非常感谢你的帮助!

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

丹尼尔

最新更新