NSDictionary取值的两个方法objectForKey与valueForKey的区别
https://blog.csdn.net/liuzhihui666/article/details/66229384
objectForKey: returns the value associated with aKey, or nil if no value is associated with aKey. 返回指定 key 的 value,若没有这个 key 返回 nil.
valueForKey: returns the value associated with a given key. 同样是返回指定 key 的 value。
valueForKey: 有额外一点:
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. via Discussion
一般来说 key 可以是任意字符串组合,如果 key 不是以 @ 符号开头,这时候 valueForKey: 等同于 objectForKey:,如果是以 @ 开头,去掉 key 里的 @ 然后用剩下部分作为 key 执行 [super valueForKey:]。
如果是这样一个 dict:
1 | NSDictionary *dict = [NSDictionary dictionaryWithObject:@"theValue" |
value1 可以正确取值,但是 value2 取值会直接 crash 掉.