Значение указателя объекта как ключ в словарь - PullRequest
5 голосов
/ 25 апреля 2010

Я хочу использовать ссылочное значение объекта в качестве ключа в словаре, а не копию значения объекта. Поэтому я хочу сохранить объект, связанный с конкретным экземпляром другого объекта, в словаре и получить это значение позже.

Возможно ли это? Это полностью против идеи NSDictionary? Я могу сказать, что я, вероятно, подхожу к этому неправильно, потому что словарь хочет, чтобы я реализовал NSCopying для самого объекта, что не имеет смысла с точки зрения того, что я делаю. Я вижу, что на самом деле я должен обернуть значение указателя, но это кажется немного безумным.

Совет был бы оценен.

Ответы [ 3 ]

11 голосов
/ 25 апреля 2010

Я думаю, вы можете использовать [NSValue valueWithPointer:object].

2 голосов
/ 25 апреля 2010

NSMutableDictionary был разработан для работы только с экземплярами объекта Objective-C. Например, когда вы вызываете setObject:forKey:, метод вызывает copyWithZone: для ключа и retain для значения.

Если вы хотите иметь структуру словаря и иметь возможность иметь дело с произвольным ключом и значением, то вы можете использовать CFMutableDictionary . Вы можете точно описать, что делается с ключом и значениями; он достаточно гибок для работы с произвольным указателем или строкой char *.

0 голосов
/ 16 апреля 2015

Это помогло мне

aDictionary[@((intptr_t)object)] = ...;
...