当密钥不存在时,NSMutableDictionary返回0xffffffff而不是nil

时间:2011-09-23 15:16:49

标签: cocoa-touch nsdictionary null

我有一个奇怪的NSMutableDictionary:

(gdb) po listenerRegistry
{
}
(gdb) po productID
com.mycompany.productid
(gdb) po [listenerRegistry objectForKey:[productID stringValue]]
0xffffffff does not appear to point to a valid object.
(gdb) po [listenerRegistry class]
__NSCFDictionary
(gdb) 

根据文档,对于不在字典中的键,应该返回nil

之前有其他人见过吗?

1 个答案:

答案 0 :(得分:3)

回答我自己的问题。

NSMutableDictionary内的对象属于id <MyObserverProtocol>类型,看来Monolo在他的观察中是正确的,返回的值看起来像NSNotFound

显然,当基本类在不存在或找不到时,会被要求返回NSNotFound项(如here所述)。虽然文档明确列出了NSArray,但我觉得有必要相信我的情况也是如此。