• KVC机制是如何通过key来寻找value


    setValue:forKey:搜索方式

    1、首先搜索setKey:方法。

    2、第一步没有找到的话,如果类方法accessInstanceVariablesDirectly返回为YES。那么按照_key,_isKey,key,isKey的顺序搜索成员名。(NSKeyValueCodingCatogery中实现的类方法,默认返回为YES)

    3、如果没有找到成员变量,调用setKey:forUnderfinedKey:

    valueForKey:搜索方式

    1、首先按照getKey,key,isKey的顺序查找getter方法,找到直接调用。如果是BOOL,int等内建值类型,会做NSNumber类型转化。

    2、上面的方法没有找到,查找countOfKey、objectInKeyAtindex、KeyAtindexes格式的方法。如果找到,那么就会返回一个可以响应NSArray所有方法的代理集合的NSArray消息方法。

    3、还没有找到的话,查找enumeratorOfKey、memberOfKey格式的方法。如果找到,就会返回一个可以响应NSSet所有方法的集合。

    4、还是没有找到的话,如果类方法accessInstanceVariablesDirectly返回为YES。那么按照_key,_isKey,key,isKey的顺序搜索成员名。

    5、再没找到的话,调用valueForUnderfinedKey。

  • 相关阅读:
    HDU 2159 FATE
    POJ 3384 Feng Shui 凸包直径 + 半平面交
    Irrlicht学习之光照的研究
    正襟危坐说--操作系统(伍):进程间通信
    网站建设--团队的重要性
    好累啊,你感觉到了吗?
    android 4.2 root
    OpenSSL命令---rand
    STL中deque
    正襟危坐说--操作系统(陆):进程同步
  • 原文地址:https://www.cnblogs.com/leeinventor/p/8287020.html
Copyright © 2020-2023  润新知