KVO 键值观察者

KVO(键值观察者)

//监听的创建

-(id)initChildren:(Person *)person

{

self = [super init];

if (self != nil) {

//拥有所有权,防止被自动释放

// _person = [person retain];

self.person = _person;

[_person addObserver:self forKeyPath:@"happyVal" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:@"xxx"];

}

return self;

}

//移除监听器

-(void)dealloc

{

[_person removeObserver:self forKeyPath:@"happyVal"];

[_person release];

[super dealloc];

}

//监听变化,显示变化

- (void)observeValueForKeyPath:(NSString *)keyPath

ofObject:(id)object

change:(NSDictionary *)change

context:(void *)context

{

NSLog(@"change :%@",change);

}

//监听要改变的对象 ,  self.改变的对象名  或则是 kvc(注意点这两边的key记得要一致) 定义 不能使用 _对象名直接改变对象值,这这样KVO是没有办法监听它变化的

//通知

//发出通知

[NSNotificationCenter defaultCenter]postNotificationName:定义的通知名 object:要发送的对象

//接收通知

[NSNotificationCenter  defaultCenter]addObserver:self selector:@selector:(action:) name:这是定义的通知方式名 object:nil];

-(void) action:(NSNotification *)notification{

}

上一篇:数据类型-字符串类型


下一篇:大约 Apple Metal API 一些想法