1

我正在使用 Cocoa 绑定来管理对象表。我了解绑定是如何工作的,但我遇到了一个小问题。管理对象表会很好而且很花哨,除了这些对象必须管理实际的蓝牙硬件。我正在开发一个框架,该框架提供一个表示与该硬件的连接的类,并制作了另一个“管理器”类,使其符合键值。换句话说,这个管理器类必须能够连接并修改其属性字典中的“连接”状态,成为该硬件的代表并修改属性,并使用所做的更改更新硬件。

但是,每当我在对象本身中设置新值时,例如在将“连接”键的值更改为 2(查看)的“连接”方法中,(即propertiesDict = newDict),观察者似乎并没有注意到这种变化它是必然的。我看过里面observeValueForKeyPath:ofObject:change:context:NSKeyValueObservingProtocol。但是,我不知道如何处理上下文参数。

我希望这是有道理的……但如果有人有任何想法,我很想听听。

4

2 回答 2

2

您的问题并不完全清楚,但如果我理解正确,问题可能是因为您需要在更改嵌入对象中的值之前和之后发送手动 KVO 通知。例如,[self willChangeValueForKey:@"connected"];[self didChangeValueForKey:@"connected"];

于 2009-06-09T12:24:38.630 回答
0

可以通过三种方式以兼容 KVO 的方式更新属性/属性:

  1. 使用属性设置器(在@property声明中指定或由 生成@synthesize
  2. 在以任何方式更改属性值之前和之后-willChangeValueForKey:调用。-didChangeValueForKey:
  3. 打电话-setValueForKey:
于 2010-09-02T16:12:47.110 回答