美文网首页
底层原理总结 — KVC

底层原理总结 — KVC

作者: 踩坑小分队 | 来源:发表于2020-02-08 21:31 被阅读0次

1、KVC setValue: forKeyPath:的实现原理

未命名文件.png

2、KVC操作能不能触发KVO的监听

@interface Person : NSObject
{
    @public
    int _age;
}

@end

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    Person *per = [[Person alloc] init];
    
    [per addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
    
    [per setValue:@10 forKeyPath:@"age"];
    
    [per removeObserver:self forKeyPath:@"age"];
    
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
{
    NSLog(@"keyPath = %@   %@",keyPath,change);
}

可以触发<满足KVC的任何一种方式都可以触发>,可能调用KVC的时候内部触发了

[per willChangeValueForKey:@"age"];
per->_age = 123;
[per didChangeValueForKey:@"age"];
触发KVO

3、KVC valueForKey:的原理

KVC valueForKey: 的原理.png

相关文章

网友评论

      本文标题:底层原理总结 — KVC

      本文链接:https://www.haomeiwen.com/subject/vzvyxhtx.html