- (voID)setData:(DataObject *)newData { // defer to synthesised setter [super setData:newData]; // react to new data ...}
…但当然这没有意义 – 我不能像这样使用超级.那么处理这种情况的最佳方法是什么?我应该使用KVO吗?或者是其他东西?
解决方法 根据您想要的控制程度,有几种不同的方法可以做到这一点.一种方法是观察你自己的财产:[self addobserver:self forKeyPath:@"data" options:0 context:nil];- (voID)observeValueForKeyPath:(Nsstring *)path ofObject:(ID)object change:(NSDictionary *)change context:(voID *)context { if(object == self && [path isEqualToString:@"data"]) { //handle change here } else [super observeValueForKeyPath:path ofObject:object change:change context:context];}
如果不是之前,请确保在dealloc或finalize方法中将自己移除为观察者.
另一种方法是覆盖-dIDChangeValueForKey:.但是,如果对象上没有观察者,则可能无法调用此方法.
- (voID)dIDChangeValueForKey:(Nsstring *)key { [super dIDChangeValueForKey:key]; if([key isEqualToString:@"data"]) { //handle change here }}总结
以上是内存溢出为你收集整理的objective-c – 回应setter全部内容,希望文章能够帮你解决objective-c – 回应setter所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)