【问题标题】:objective c, notify other threads目标c,通知其他线程
【发布时间】:2013-03-24 14:10:59
【问题描述】:

我的任务是下载内容、解析内容、保存在数据库中并在完成后更新 UI(或通知用户错误)。这将用于应用程序的不同部分,因此我想提取此代码以分离类并用作异步外观。我使用 NSURLConnection 来处理网络任务。 NSURLConnection 在单独的线程中调用我的回调。但是我的 UI 代码应该在主线程中运行。我可以存储一组块以使用 dispatch_async 从主线程调用和调用它们,但这意味着这个主线程将被硬编码。它看起来我想重新发明轮子,并且应该在目标 c 中使用一些机制来在线程之间进行通信,但我找不到它。基本上我想要:

接收者订阅接收具有给定标识符的消息,并指定应在其中分派通知的线程。

发送者发送消息标识符和一些附加数据。

所有订阅的接收者都在他们指定的线程中收到此消息。

或者有其他适合我的任务的模式吗?

【问题讨论】:

  • 而不是订阅,一个块将下一步作为任何队列中的另一个块提交,然后从最后一个块更新 UI 有什么问题?

标签: objective-c asynchronous


【解决方案1】:

您可以使用NSNotificationCenter 在不同线程上运行的对象之间进行通信。并从不同线程发布通知。

See Apple NSNotificationCenter Documentation

要在主线程上更新 UI 元素,请使用 [self performSelectorOnMainThread:@selector(somefunction) withObject:nil waitUntilDone:NO];

【讨论】:

    猜你喜欢
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 2013-08-05
    相关资源
    最近更新 更多