为什么我无法观察UITableViewController
实例的editing
属性?观察UITableViewController的编辑属性
我用下面的代码:
[self addObserver:self
forKeyPath:@"editing"
options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld)
context:NULL];
,并实施方法:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
...但observeValueForKeyPath
方法不会被调用时,该值发生变化。
根据苹果的部分:
对于那些属性或一对一的关系性质,这需要你的类:
- 实施一个名为
-<key>
方法,或者具有实例变量<key>
或_<key>
。- 如果该属性是可变的,那么它也应该执行
-set<Key>:
。- 您执行的
-set<Key>:
方法不应执行验证。- 如果验证适用于密钥,则您的课程应实施
-validate<Key>:error:
。
为editing
属性的文件,指出它被定义为:
@property(nonatomic, getter=isEditing) BOOL editing
由于此属性是不可变的,唯一的子弹点必须符合是第一个(即例如,定义了一个-is<Key>
方法)。您可以通过查看该属性的声明来了解它是否符合此要求,并且注意到已定义一个方法isEditing
。因此,它应该是关键值观察兼容。它怎么不起作用?
出于好奇,你为什么要观察属性,而不是实现'setEditing:animated:'? – 2010-09-28 21:33:06
@戈登:用于与该方法相关的调试原因。 – Senseful 2010-09-29 00:05:26