iOS开发67- valueForKey:和objectForKey:的区别
objectForKey:
返回指定key的value值,若没有这个key则返回nil
valueForKey:
如果key不是以@开头,这时候valueForKey:等同于 objectForKey:
如果是以@开头,会去掉key里的@然后用剩下部分作为key执行 [super valueForKey:]
取值是找和指定key同名的property accessor,没有的时候执行valueForUndefinedKey:
而 valueForUndefinedKey:的默认实现是抛出NSUndefinedKeyException异常
[dict valueForKey:@"@theKey"]; 会把 key 里的 @ 去掉,也就变成了 [dict valueForKey:@"theKey"];,而 dict 不存在 theKey 这样的 property,转而执行 [dict valueForUndefinedKey:@"theKey"];,抛出 NSUndefinedKeyException 异常后 crash 掉。
objectForKey: 和 valueForKey: 在多数情况下都是一样的结果返回,但是如果 key 是以 @ 开头,valueForKey: 就成了一个大坑,建议在 NSDictionary 下只用 objectForKey: 来取值。
著作权声明:本文由http://www.bestnathan.com/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢