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);
}
 

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