KVO原理

KOV是利用KVC和通知共同实现的

自动发送通知

需要手动发送通知

+ (BOOL)automaticallyNotifiesObserversForKey:(NSString *)key{
    return NO;
}

在对象中实现反方 系统就不会发出通知了

若想要通知 者需要手动的调用
[clase WillChangeValueForKey:@"name"];
class,name = @"hehe";
[clase didChangeValueForKey:@"name"];

底层实现

在运行时 会创建一个这个"对象"的子类NSKVONotifying_"对象" 把 isa指真指向子类
重写子类的set方法 就行了

注意

只能监听属性

特别注意 NSMutableArray 的设置值

//[class.array addObject:@"ddd"] --这个方法不会调用通知的
要用下面方法
[[class mutableArrayValueForKey:@"array"] addObject:@"ddd"]

你可能感兴趣的:(KVO原理)