zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    任意代码执行实例
    任意代码执行漏洞
    Port Hacking
    任意命令执行漏洞
    sql注入基于错误-单引号-字符型
    与SQL注入第一次相遇
    Hibernate基础知识
    TxQueryRunner类对结果集封装成bean、map及object的操作
    map的数据创建任意类的JavaBean对象
    UUID产生的JAR
  • 原文地址:https://www.cnblogs.com/leeinventor/p/8287020.html
Copyright © 2011-2022 走看看