1、KVC
NSKeyValueCoding,即键值编码
//常用的 setter、getter 方式
Person *p = [[Person alloc] init];
p.name = @"张三"; //setter
p.age = 20; //setter
NSString *name = p.name; //getter
Int age= p.age;//getter
等价于
//KVC 方式赋值
[p setValue:@"张三" forKey:@"name"];
[p setValue:@20 forKey:@"age"];
NSString *name =[p valueForKey:@"name"];
Int age= [p valueForKey:@"name"].int;
2、KVO
KeyValue Observe,即键值观察。观察者模式
//添加观察者
Person *p = [[Person alloc] init];
p.name = @"张三"; //setter
[p addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil];
p.name = @"李四"; //通知改变
//如果观察的值有改变,得调用下面的方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"name"]) {
//name被改变了
}
}
//记得销毁观察者
- (void)dealloc
{
[p removeObserver:self forKeyPath:@"name" context:nil];
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。