KVO

166 阅读1分钟

kvo - key value observable

  1. 添加了kvo的对象,程序会在运行时通过runtime动态生成一个派生类 NSKVONotify_Class
  2. 派生类中会重写set方法,并调用foundation框架中的_NSSet(数据类型,ex:int,double...)ValueAndNotify
-(void)setValue:(Int)value{
    
    _NSSetIntValueAndNotify(value)
    
}
 void _NSSetIntValueAndNotify(int value){
    //即将改变值
   [self  willChangeValue];
    ///调用父类方法设值
    [super serValue:value];
    ///完成值改变
    [self didChangeValue:value];
 }
 void didChangeValue(int value){
     这里会调用observal的方法
     [observable  observalue:value content:nil object:nil];
 }
 

3:派生类其余重写方法

-(void)dealloc{
    
}
-(Class)class{
    
}
-(Bool)_isKvo{
    return true
}