【发布时间】:2015-04-21 22:18:49
【问题描述】:
我正在尝试在名为“currentTopViewPosition”的属性发生更改时获取通知。我使用以下代码注册更改并接收它们:
[self addObserver:self
forKeyPath:@"currentTopViewPosition"
options:NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld|NSKeyValueObservingOptionPrior
context:NULL];
那么接收方:
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSLog(@"Key Path: %@\n change: %@",keyPath, change);
}
但没有任何记录。
我通过使用 NSTimer 每 5 毫秒打印出它的值并且它正在改变来测试以确保该值实际上正在改变。
我似乎从来没有让键值观察工作,所以我做错了什么吗?漏了一步?
谢谢!
【问题讨论】:
-
UIKit 不保证与 KVO 兼容
-
@danielbeard 但是这包括什么?这是 uiviewcontroller 子类中的自定义属性,是否会取消它的资格?
-
如何计算?您能说明
currentTopViewPosition的定义位置吗? -
@danielbeard 其定义如下:
@property (nonatomic, assign, readonly) ECSlidingViewControllerTopViewPosition currentTopViewPosition;它是 1 或 0(由常量定义) -
在那个类中,你是把属性重新声明为
readwrite还是直接使用ivar?
标签: cocoa-touch key-value-observing