KVC的原理

1.当一个对象第一次被观察时,系统使用runtime机制自动创建一个该类的派生类,在派生类中重写,陪观察属性的setter方法,在setter发布方法中添加通知机制的代码。

2.将对象的isa指针修改为指向派生类,所以对象调用sette方法时就会调用派生类中重写的setter方法。此外派生类还重写了dealloc方法用于释放资源。

手动通知:

- (void)willChangeValueForKey:(NSString *)key;
- (void)didChangeValueForKey:(NSString *)key;

KVC错误处理

- (void)setValue:(id)value forUndefinedKey:(NSString*)key;
- (id)valueForUndefinedKey:(NSString*)key;
- (void)setNilValueForKey:(NSString*)key;

KVC Colletion Operation

Collection Operators有3种,分别是:Simple Collection Operators,Object Operators,Array and Set Operators。且操作对象均为数组或集合

KVO的依赖

+ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString*)key

+ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString*)key {
        NSSet*keyPaths = [super keyPathsForValuesAffectingValueForKey:key];
        if([key isEqualToString:@"fullName"]) {
                NSArray*affectingKeys = @[@"givenName",@"familyName"];
                 keyPaths = [keyPaths setByAddingObjectsFromArray:affectingKeys]
         }
        return keyPaths;
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容