valueForKey: Vs objectForKey:
2014-12-30 14:51
267 查看
原文地址:http://blog.sheliw.com/blog/2014/11/26/valueforkey-vs-objectforkey/
访问NSDictionary时既可以使用字典内的方法
如文档所说:
If key does not start with “@”, invokes
If key does start with “@”, strips the “@” and invokes
总之,从速度,安全性方面考虑我们应该在能用
访问NSDictionary时既可以使用字典内的方法
objectForKey:,也可以使用KVC的方法
valueForKey:。但是使用这两种方法有什么区别呢?
+ (id)valueForKey:(NSString *)key的key必须是NSString型,
- (id)objectForKey:(id)aKey的key可以是id类型也就是任何NSObject的子类,不过这个key必须遵循NSCopying协议。
+ (id)valueForKey:(NSString *)key作为一个KVC方法,可以适用于任何类,可以在运行时改变任何类的一个属性。其他语言很少能做到这一点。
- (id)objectForKey:(id)aKey只用于NSDictionary或者其子类。
+ (id)valueForKey:(NSString *)key用于NSDictionary时,如果key不包含@,将会调用
objectForKey:。如果key包含@,将会调用
[super valueForKey:],这就会导致如果key不存在时将会执行此方法
valueForUndefinedKey:并抛出异常。
- (id)objectForKey:(id)aKey在访问NSDictionary里不存在的key时。得到的object为nil。但是不会抛出异常。
如文档所说:
valueForKey:Discussion:
If key does not start with “@”, invokes
objectForKey:.
If key does start with “@”, strips the “@” and invokes
[super valueForKey:]with the rest of the key.
总之,从速度,安全性方面考虑我们应该在能用
objectForKey:的地方就不要用
valueForKey:。
相关文章推荐
- objectForKey与valueForKey在NSDictionary中的差异
- kvc和字典在创建键值对时的相同与区别(setValue forKey )(setObject forKey)
- 【iOS】Difference Between objectForKey and valueForKey in NSDictionary
- objectForKey与valueForKey在NSDictionary中的差异
- iOS开发之NSDictionary里setValue:forKey与setObject:forKey、objectForKey与valueForKey的差异
- IOS开发之——objectForKey与valueForKey在NSDictionary中的差异
- Objective-c setObject:forKey:和setValue:forKey:的区别
- Difference Between objectForKey and valueForKey in NSDictionary
- objectForKey与valueForKey在NSDictionary中的差异
- GetObjectbyKey in E.F. vs. Querying for a single entity
- IOS开发之NSDictionary里setValue:forKey与setObject:forKey、objectForKey与valueF...
- objectForKey与valueForKey在NSDictionary中的差异
- setValue:forKey与setObject:forKey、objectForKey与valueForKey的差异
- setValue forKey 和 setObject forKey
- IOS开发之NSDictionary里setValue:forKey与setObject:forKey、objectForKey与valueForKey的差异
- IOS开发之NSDictionary里setValue:forKey与setObject:forKey、objectForKey与valueForKey的差异
- objectForKey与valueForKey在NSDictionary中的差异
- setObject:ForKey:与setValue:ForKey:存值区别与联系
- IOS开发之NSDictionary里setValue:forKey与setObject:forKey、objectForKey与valueForKey的差异
- ios开放--objectForKey与valueForKey在NSDictionary中的差异