观察者的整数属性

时间:2014-05-08 14:14:33

标签: ios objective-c key-value-observing

我有一个整数属性,该值可能在运行时更改。因此,如果此值已更改,我想将此属性注册到观察者,以便接收通知和调用方法。我已经红了Apple Documentation但据我所知,这只适用于NSObjects,而不适用于整数。在.h我创建了@property int activePlayer;

这就是我在viewDidLoad

中所做的事情
[self.activePlayer addObserver:playerChangedObserver
          forKeyPath:@"activePlayer"
             options:(NSKeyValueObservingOptionNew |
                      NSKeyValueObservingOptionOld)
             context:NULL];

期待一些帮助。感谢

更新

也许你需要一些额外的信息。 .h.m正在实施UIViewController,其中我正在使用轻弹手势。如果手势较弱,则int为1,如果手势较强,则会更改为2。在我的项目中,使用此变量是有意义的,因此我无法删除它。

我将观察者注册更改为:

[self addObserver:self
              forKeyPath:@"activePlayer"
                 options:(NSKeyValueObservingOptionNew |
                          NSKeyValueObservingOptionOld)
                 context:NULL];

第一个self是观察对象,属性来自该对象。密钥路径是属性,我使用的是第二个self,因为如果密钥更改,它也应该接收消息。我误解了那里的东西吗?

2 个答案:

答案 0 :(得分:4)

你真的尝试过这段代码吗?键值观察的introductory example用于整数属性。它进一步说明了

  

如果属性是标量或C结构,则该值将包装在NSValue对象中(与键值编码一样)。

因此,您需要先解压缩它,然后才能对其执行任何操作,但它应该按原样运行。

答案 1 :(得分:0)

你应该在.m

中实施
observeValueForKeyPath:ofObject:change:context:

你应该使用

self.activePlayer = 1;

设置你的'activePlayer'属性