我正在Cocoa中开发一个多线程应用程序。主线程从用户那里获取值,并且当点击一个按钮时,我会调用一个辅助线程,在其中进行长时间的计算。现在,我必须从这个线程返回每一步计算的输出到主线程。我希望定期从一个线程向另一个线程发送数据。我找不到任何简单的例子来完成这个任务。有什么想法吗?
我正在Cocoa中开发一个多线程应用程序。主线程从用户那里获取值,并且当点击一个按钮时,我会调用一个辅助线程,在其中进行长时间的计算。现在,我必须从这个线程返回每一步计算的输出到主线程。我希望定期从一个线程向另一个线程发送数据。我找不到任何简单的例子来完成这个任务。有什么想法吗?
有几种方法可以实现这一点,按复杂度排序(从简单到复杂):
详细信息请查看Abizer提到的文档。
performSelectorOnMainThread:withObject:waitUntilDone:
通常是使用后台线程的进度更新UI的最简单方法。您还可以创建自己的存储区域,使用NSLock或类似机制安全地在线程之间访问,甚至可以使用分布式对象(也适用于进程或网络之间)。
然后有NSOperationQueue和NSOperation,它们确实有助于简化多线程编程,尽管许多程序员一直在避免使用它,因为在Leopard下它可能会在某些情况下导致崩溃。