我有一个反映NSOperation
. 我应该如何将 绑定NSProgressIndicator
到NSOperation
的进度属性?
问问题
1817 次
2 回答
7
AppKit 不是线程安全的。对 UI 对象的任何更新都必须发生在主线程上。KVO 不会跨线程发送观察消息。因此,您需要另一种更新进度指示器的方法,而不仅仅是普通的 KVO。
在您NSOperation
的main
方法中,您需要定期发送进度消息。最简单的做法是使用NSNotificationCenter
自定义通知,以便主线程可以监听更新。(请注意,通知始终在发送它们的线程上传递,因此您需要使用该performSelectorOnMainThread:
方法确保通知在 UI 线程上传递。)
在您的主线程中,您需要将您的类添加为观察者以接收这些通知并更新进度指示器。如果您想为进度指示器使用绑定,您可以将它绑定到控制器对象上的一个属性,当您从NSOperation
.
于 2009-09-08T19:35:37.463 回答
0
Ben Copsey 的ASIHTTPRequest
包装纸就是这样做的。
该请求是 的子类NSOperation
,您可以在实例化时将进度指示器传递给它。
如果您想了解它是如何工作的,您可以查看该代码。
于 2009-09-08T19:42:24.737 回答