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。

  • 相关阅读:
    9. Palindrome Number
    7. Reverse Integer
    6. ZigZag Conversion
    1. Two Sum
    [leetcode]Binary Tree Zigzag Level Order Traversal
    [leetcode]Scramble String
    [leetcode]Convert Sorted Array to Binary Search Tree
    [leetcode]Sum Root to Leaf Numbers
    [leetcode]Longest Consecutive Sequence
    [leetcode]Reverse Linked List II
  • 原文地址:https://www.cnblogs.com/leeinventor/p/8287020.html
Copyright © 2011-2022 走看看