美文网首页
KVO和KVC的理解

KVO和KVC的理解

作者: 昵称是乱起的 | 来源:发表于2019-01-21 17:28 被阅读4次
KVO键值监听的使用
[A addObserver:self forKeyPath:@"value" options:NSKeyValueObservingOptionNew context:@"123"];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
{
    NSLog(@"监听到%@的%@属性值改变了 - %@ - %@", object, keyPath, change, context);
}

KVO是OC观察者模式的又一实现,使用了isa混写来实现的KVO

KVO原理

1.运行时会创建一个NSKVONotifying_A的子类,并将监听对象的A的isa指针指向这个NSKVONotifying_A的子类
2.在这NSKVONotifying_A的内部重新这个setter方法

- (void)setValue:(NSString *)value
{
    [self willChangeValueForKey:value];
    _value = value;
    [self didChangeValueForKey:value];
}

3.didChangeValueForKey:内部会调用observer的observeValueForKeyPath:ofObject:change:context:方法

几个注意点
  • 使用KVC改变值,KVO可以观察到变化
  • 修改成员变量的值,KVO观察不到,必须添加KVO手动实现,willChangeValueForKey,didChangeValueForKey
  • 使用setter方法改变值KVO才能生效
KVC键值编码的使用
- (void)setValue:(id)value forKeyPath:(NSString *)keyPath;
- (void)setValue:(id)value forKey:(NSString *)key;
- (id)valueForKeyPath:(NSString *)keyPath;
- (id)valueForKey:(NSString *)key; 
KVC的原理
image.png
image.png

相关文章

  • delegate和notification区别,分别在什么情况下

    KVC(Key-Value-Coding)KVO(Key-Value-Observing)理解KVC与KVO(键-...

  • KVC、KVO

    KVC、KVO探识(一)KVO和KVO的详细使用 KVC、KVO探识(二)KVC你不知道的东西 KVC、KVO探识...

  • KVC,KVO

    KVC , KVO KVC和KVO的区别及应用 KVC/KVO原理 1. KVC键值编码 KVC,即是指NSKey...

  • ios基础——KVO、KVC

    KVO和KVC常见问题: 1.KVC和KVO是什么.2.KVC和KVO的原理是什么3.KVC和KVO的使用场景4....

  • 可能碰到的iOS笔试面试题(7)--KVO-KVC

    KVC-KVO KVC的底层实现? KVO的底层实现? 什么是KVO和KVC? KVO的缺陷? KVO是一个对象能...

  • KVO和KVC理解

    一、KVO(Key-Value-Observing) 键值观察者模式,说白了就是当你监听的值发生变化时,会收到对应...

  • KVO 和 KVC 理解

    一,概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就...

  • KVC 和 KVO

    iOS-KVC和KVO精炼讲解(干货)KVC 和 KVOiOS开发系列--Objective-C之KVC、KVO细...

  • KVC和KVO的理解

    -Key Value Coding是cocoa的一个标准组成部分,它能让我们可以通过name(key)的方法访问p...

  • KVO和KVC的理解

    KVO键值监听的使用 KVO是OC观察者模式的又一实现,使用了isa混写来实现的KVO KVO原理 1.运行时会创...

网友评论

      本文标题:KVO和KVC的理解

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