KVO

在使用kvo进行监听的时候,如何触发KVO回调

1)使用 KVC 方法
如果存在访问器方法,则会调用访问器方法, 访问器方法会调用 will/didChangeValueForKey: 方法;
如果没用访问器方法,会在 setValue:forKey 方法中调用 will/didChangeValueForKey: 方法。
2)使用访问器方法
运行时会重写访问器方法调用 will/didChangeValueForKey: 方法。因此,直接调用访问器方法改变属性值时,KVO也能监听到。
3)手动调用
在赋值前后,手动调用 will/didChangeValueForKey: 方法。

willChangeValueForKey: 内部会通过kvc拿到key对应的值.

也就是说,如果我们重写getter方法,调用willChangeValueForKey:

getter方法会调用willChangeValueForKey, willChangeValueForKey调用kvc,kvc调用getter方法,因此会死循环

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • KVC KVC定义 KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通过K...
    暮年古稀ZC阅读 2,294评论 2 9
  • KVC定义 KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通过Key名直...
    SheIsMySin_72e7阅读 423评论 0 0
  • KVO: KVO的全称是Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变...
    曹来东阅读 702评论 0 0
  • 一 KVO基本使用 二 KVO本质原理讲解及代码验证 三 KVC基本使用 四 KVC设值原理 五 KVC取值原理 ...
    当前明月阅读 702评论 0 1
  • 夜莺2517阅读 128,206评论 1 9

友情链接更多精彩内容