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"]
网友评论