一短绸、關(guān)于 valueForKey:key 的調(diào)用順序
1肤寝、 先調(diào)用相關(guān)方法像街,先后順序是
|- getter 方法:getKey -> key -> isKey
|- NSArray 方法:countOfKey 和 objectInKeyAtIndex 或者 keyAtIndexes
|- NSSet 方法:countOfKey 和 其他兩種方法
2黎棠、 如果沒有相關(guān)方法,看 + (BOOL)accessInstanceVariablesDirectly 返回值镰绎!
|- YES 找成員變量脓斩,先后順序:_key -> _isKey -> key -> isKey
|- NO & 以上找不到 異常 valueForUndefinedKey:
二、關(guān)于 setValue: forKey:key 的調(diào)用順序
1畴栖、 先調(diào)用相關(guān)方法随静,先后順序是
|- setter 方法:setKey -> setIskey
2、 如果沒有相關(guān)方法驶臊,看 + (BOOL)accessInstanceVariablesDirectly 返回值挪挤!
|- YES 找成員變量,先后順序:_key -> _isKey -> key -> isKey
|- NO & 以上找不到 異常 setValue: forUndefinedKey:
三关翎、封裝基類扛门,需要對(duì) setValue:forKey: 和 valueForKey: 方法的異常做處理,程序才健壯
- (id)valueForUndefinedKey:(NSString *)key
{
return nil;
}
- (void)setValue:(id)value forUndefinedKey:(NSString *)key
{
NSLog(@"Undefine");
}
- (void)setNilValueForKey:(NSString *)key
{
}