KVC-KVO

96 阅读1分钟
关于KVC取值 valueForKey:key 的调用顺序

先调用相关方法,其先后顺序:

  • getter方法:getKey(注意Key的首字母大写) -> key -> isKey
  • NSArray方法:countOfKey 和 objectInKeyAtIndex

如果没有相关方法:看+(BOOL)accessInstanceVariablesDirectly返回值

  • 返回YES 找成员变量,先后顺序是:_key -> _isKey -> key -> isKey
  • 返回NO 抛出异常 valueForUndefinedKey
关于KVC赋值 setValueForKey 的调用顺序

先调用相关方法,其先后顺序:

  • setter方法:setKey -> _setKey

如果没有相关方法:看+(BOOL)accessInstanceVariablesDirectly返回值

  • 返回YES 找成员变量,先后顺序是:_key -> _isKey -> key -> isKey
  • 返回NO 抛出异常 valueForUndefinedKey