是否可以为属性值更改添加自定义事件?我需要在属性值更改时触发事件。
答案 0 :(得分:3)
我假设您想要在另一个对象(“观察”)中更改属性时触发对象(称为“观察者”)中的事件。
您可以通过两种方式执行此操作:
使用通知中心,您可以通过使用任何NSNotificationCenter“postNotification:”方法发布通知来覆盖设置者,然后所有感兴趣的观察者都会收到通知,只要他们为此类通知进行了注册。
使用KVO(键值观察)您必须使用具有该属性的实例显式注册观察者;例如如果self想要注册“instanceToObserve”属性“myProperty”:
[instanceToObserve addObserver:self forKeyPath:@"myProperty" option:NSKeyValueObservingOptionNew context:NULL];
然后在“自我”的类中实现“观察”功能:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
// your implementation goes here
}
两者的用途取决于你。如果您遵循基本的Cocoa约定规则,请考虑自动支持KVO,因此不需要额外的工作,也不需要对合成的setter进行任何更改。
答案 1 :(得分:0)
不确定。例如
<。>文件中的
NSString * myString
<。>文件中的
- (NSString *)myString {
//Custom event
return myString;
}
这会创建一个可以用作self.myString
的属性myString答案 2 :(得分:0)
您可以使用KVO(键值观察)或定义您自己的setter方法并在其中编写自定义事件吗?通常,KVO用于观察属性值的变化。
https://stackoverflow.com/questions/4813331/understanding-kvo-in-ios