NSMutableDictionary возвращает 0xffffffff вместо nil, когда ключ не существует - PullRequest
3 голосов
/ 23 сентября 2011

У меня есть 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 Ответ

3 голосов
/ 23 сентября 2011

Отвечая на мой вопрос.

Объекты внутри NSMutableDictionary относятся к типу id <MyObserverProtocol>, и кажется, что Моноло был прав в своем наблюдении, что возвращаемое значение выглядит как NSNotFound.

Очевидно, что базовые классы возвращают NSNotFound при запросе элементов этого типа, когда они не существуют или не найдены (как обсуждено здесь ). Хотя документация явно указывает NSArray, я вынужден полагать, что то же самое происходит и в моем случае.

...