iOS KVC setValue: forKey: 和 valu

2020-06-16  本文已影响0人  shizidy_90

当我们调用setValue: forKey:时,内部对key的查找顺序是这样的:
1.首先查找setKey: 然后_setKey:方法是否存在,找到了就传参调用,没有找到setKey:_setKey:方法会调用accessInstanceVariablesDirectly方法,该方法返回值是Bool类型,方法内部如果返回NO,就会调用setValue: forUndefinedKey: 并抛出异常NSUnknownKeyException,如果返回YES,则按照_key --> _isKey --> key --> isKey的顺序查找成员变量,找到了成员变量就直接取值,如果没有找到,就调用setValue: forUndefinedKey: 并抛出异常NSUnknownKeyException
流程图如下:

截屏
当我们调用valueForKey:时,流程图如下:
截屏
上一篇 下一篇

猜你喜欢

热点阅读