KVO用于手动实现的属性

时间:2012-04-06 11:03:32

标签: ios key-value-observing

根据Ensuring KVC Compliance

  

对于属性或一对一关系的属性,这需要您的类:

     
      
  • 实施名为-<key>-is<Key>的方法,或者具有实例变量<key>_<key>
  •   

将观察者添加到“FAKE”属性的最佳方法是什么?

@property (nonatomic, readonly) BOOL shortlisted; 

#pragma mark - Fake properties

- (BOOL)shortlisted
{
    return [self.provider isJobShortlisted:self];
}   

1 个答案:

答案 0 :(得分:13)

从属密钥

如果您只有一个依赖于同一对象的另一个密钥的密钥,则可以覆盖+keyPathsForValuesAffectingValueForKey:。 (另请参阅this article了解常见的陷阱。)

KVO文档包含有关依赖于其他对象的密钥的信息,但遗憾的是,它似乎只在OS X(而非iOS)上具有内置支持。

手动通知

如果您要实现完全自定义的属性,KVO文档中Manual Change Notification部分的部分会提供您需要的所有信息。关键点是(来自文档的引用):