【问题标题】:calling a method that changes nib properties using detachNewThreadSelector调用使用 detachNewThreadSelector 更改 nib 属性的方法
【发布时间】:2010-10-30 17:47:32
【问题描述】:

我正在调用 doSaveItems: like

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

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

[uiProgressLedIdle setHidden:YES];

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

【问题讨论】:

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


    【解决方案1】:

    UIKit 不是线程安全的;总是从主线程调用。

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

    【讨论】:

      猜你喜欢
      • 2019-02-04
      • 2023-03-30
      • 1970-01-01
      • 2016-06-28
      • 2020-10-19
      • 1970-01-01
      • 2018-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多