调用使用detachNewThreadSelector更改nib属性的方法

时间:2010-10-30 17:47:33

标签: objective-c multithreading uikit thread-safety nsthread

我正在调用doSaveItems:喜欢

[NSThread detachNewThreadSelector:@selector(doSaveItems:) toTarget:self withObject:aObject];

doSaveItems:方法有一个代码引用我的一个Outlets:

[uiProgressLedIdle setHidden:YES];

当然我在这个方法中设置了一个自动释放池。 问题是,当我使用detachNewThreadSelector调用此方法时[uiProgressLedIdle setHidden:YES];对我的GUI没有影响:toTarget:withObject:如果我调用它[self doSaveItems:aObject]一切都很好,我的uiProgressLedIdle是隐藏的! 对我遗失的任何建议? 谢谢!

1 个答案:

答案 0 :(得分:4)

UIKit不是线程安全的;总是从主线程拨打电话。

当然,您可以在iOS中使用多线程 - 但是您可以将下载和其他阻止请求推送到辅助线程。工作完成后,使用performSelectorOnMainThread:通知负责更新ui对象的对象。这个调用将在下一次调用主线程的运行循环时发生。