我正在尝试监听iOS上UITextView
的editable
属性。在UITextView.h
的头文件中,editable
属性被定义为:
@property(nonatomic,getter=isEditable) BOOL editable;
我使用添加观察者模式来监听KVO通知,其中我将keyPath作为NSStringFromSelector(@selector(isEditable))
进行传递,这样Xcode会在我使用未定义选择器时发出警告。注册isEditable
键路径时没有问题,但是在更改文本视图上的editable
属性后,我从未收到属性更改的通知。我使用以下代码注册观察者:
[self.textView addObserver:self
forKeyPath:NSStringFromSelector(@selector(isEditable))
options:NSKeyValueObservingOptionNew
context:KVOTestingTestsContext];
然而,如果我使用keypath NSStringFromSelector(@selector(editable))
,我会得到KVO通知,但是Xcode会生成警告,说我正在使用一个未声明的选择器“editable”。
我想知道,在应该使用自定义getter的情况下,是否有比这更好的模式可用。或者这是Xcode / clang的错误吗?