【发布时间】:2010-10-02 11:52:22
【问题描述】:
您可以将 KVO 与 Scripting Bridge 一起使用吗?
我想知道我是否可以为我的应用程序创建一个 Scripting Bridge 接口,并允许通过观察我的应用程序的 SB 命令之一返回的对象来通知客户端应用程序。
这可能吗?如果没有,有什么替代方案?
【问题讨论】:
标签: objective-c cocoa key-value-observing scripting-bridge
您可以将 KVO 与 Scripting Bridge 一起使用吗?
我想知道我是否可以为我的应用程序创建一个 Scripting Bridge 接口,并允许通过观察我的应用程序的 SB 命令之一返回的对象来通知客户端应用程序。
这可能吗?如果没有,有什么替代方案?
【问题讨论】:
标签: objective-c cocoa key-value-observing scripting-bridge
Scripting Bridge 对象只是向应用程序发送事件并获得回复的可可糖。如果您观察对象的属性,则不会向它发送任何消息,因此您不会向应用程序发送任何事件。在 Apple 事件系统中无法观察到某事——您可以发送事件并获得回复,仅此而已。
做你想做的事情的唯一方法是轮询:每 x 秒向应用程序发送一个事件,询问当前状态。
如果您尝试在 iTunes 中观察当前曲目或播放状态,那么仅此一项,您就不需要轮询,因为 iTunes 在当前曲目或播放状态时发布(未记录的)分布式通知变化。您可以使用Notification Watcher 来检查收到的通知,以便知道从中提取什么。
【讨论】:
setFoo: 方法,并在您调用它时发送 KVO 通知,就像它对应用程序中的任何其他对象所做的一样。当其他应用程序中的属性值发生更改时,这无济于事,因为这不会调用您应用程序中 SBObject 的任何方法。
我为关心我问题的任何人找到了一个名为 Distributed Objects 的替代解决方案。
【讨论】: