KVO

<span style="font-size:18px;">KVO</span>
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    Movie *movie = [[Movie alloc] init];
    /*
     注册键值观察(不用的时候一定要注销掉)
     参数1:观察者 
     参数2:观察那个属性 
     参数3:观察哪些变化 
     参数4:做传值用
     
     参数3:枚举类型:new:打印修改后的值(在值修改后调用一次)
                old:打印修改前的值(在值修改后调用一次)
                initial:在值创建或修改就打印一次(当对象创建的时候,属性默认值为nil)
                prior:值修改前和修改后各调用一次,并且用notificationIsPrior来表示修改前
     */
    
    [movie addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionPrior context:NULL];
    movie.name = @"崔成杰";
    NSLog(@"/////////");
    movie.name = @"王刚";
    
    //注销观察
    [movie removeObserver:self forKeyPath:@"name"];
}

//观察方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    NSLog(@"/////%s", __func__);
    NSLog(@"//////%@", keyPath);
    NSLog(@"+++++++%@", change);
}
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章