我有一个整数属性,该值可能在运行时更改。因此,如果此值已更改,我想将此属性注册到观察者,以便接收通知和调用方法。我已经红了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
,因为如果密钥更改,它也应该接收消息。我误解了那里的东西吗?
答案 0 :(得分:4)
你真的尝试过这段代码吗?键值观察的introductory example用于整数属性。它进一步说明了
如果属性是标量或C结构,则该值将包装在NSValue对象中(与键值编码一样)。
因此,您需要先解压缩它,然后才能对其执行任何操作,但它应该按原样运行。
答案 1 :(得分:0)
你应该在.m
中实施observeValueForKeyPath:ofObject:change:context:
你应该使用
self.activePlayer = 1;
设置你的'activePlayer'属性