NSDictionary от Cocoa: почему копируются ключи?
Все объекты, используемые в качестве ключей в NS (изменяемых) словарях, должны поддерживать протокол NSCopying, и эти объекты копируются, когда они используются в словаре.
Я часто хочу использовать более тяжелые объекты в качестве ключей, просто чтобы отобразить один объект на другой. Что я действительно имею в виду, когда я делаю это эффективно:
[dictionary setObject:someObject forKey:[NSValue valueWithPointer:keyObject]];
(«Когда я вернусь и снова вручу вам тот же экземпляр ключевого объекта, вытащите мне то же значение».)
... что я и делаю, чтобы обойти этот дизайн иногда. (Да, я знаю о NSMapTable в настольном Какао; но, например, iPhone не поддерживает это.)
Но что я недействительно get - вот почему копирование ключа необходимо или желательно в первую очередь. Что он покупает реализацию или вызывающий?