KVCとKVO
1287 ワード
KVC
setValue:forKey:
[person setValue:@"Jack" forKey:@"name"];
、このメソッドを実行するとsetName:メソッドが優先的に呼び出され、このメソッドがない場合はnameまたは_が直接変更されます.nameこのメンバー変数valueForKey:
id name = [person valueForKey:@"name"];
、このメソッドを実行するとnameメソッドが優先的に呼び出され、このメソッドがなければnameまたは_が直接読み出されます.nameこのメンバー変数KVO
//cc aa name
[aa addObserver:cc forKeyPath:@"name" options: NSKeyValueObservingOptionOld context:nil];
// cc
/**
* object keyPath
*/
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@" %@ %@ , %@", object, keyPath, change);
}
//
- (void)dealloc
{
[self.p1 removeObserver:self forKeyPath:@"name"];
}