代码之家  ›  专栏  ›  技术社区  ›  Georg Schölly Crazy Developer

如何将nsprogramcindiscator绑定到nsoperation的属性?

  •  4
  • Georg Schölly Crazy Developer  · 技术社区  · 15 年前

    我有一个窗口可以反映 NSOperation . 我该怎么装订 NSProgressIndicator 非手术治疗 的进度属性?

    2 回复  |  直到 14 年前
        1
  •  7
  •   Alex    15 年前

    AppKit不是线程安全的。用户界面对象的任何更新 必须 发生在主线程上。kvo不会跨线程发送观察消息。因此,您需要更新进度指示器的另一种方法,而不仅仅是简单的kvo。

    在你 NSOperation main 方法,您需要定期发送进度消息。最简单的方法就是使用 NSNotificationCenter 使用自定义通知,以便主线程可以侦听更新。(请注意,通知总是在发送它们的线程上传递,因此您需要使用 performSelectorOnMainThread: 方法以确保在UI线程上传递通知。)

    在主线程中,您需要添加类作为观察者来接收这些通知并更新进度指示器。如果要对进度指示器使用绑定,则可以将其绑定到控制器对象上的属性,当收到来自 非手术治疗 .

        2
  •  0
  •   Alex Reynolds    15 年前

    Ben Copsey ASIHTTPRequest 包装机就是这样做的。

    请求是的子类 NSOperation ,并且可以在实例化时将进度指示器传递给它。

    如果你想知道代码是如何工作的,那么代码可以供你查看。