CocoaTouch: словарь, который хэширует указатели, без NSCopying - PullRequest
0 голосов
/ 17 октября 2010

Я ищу лучший способ сделать это:

id key, value;
NSMutableDictionary dict;
[dict setObject:value forKey:[NSNumber numberWithInt:(int)key]]

То есть использовать NSDictionary для сопоставления адреса с объектом.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2010

Использовать CFDictionary / CFMutableDictionary.

Ключи для CFDictionary могут быть любого типа C.

const void * CFDictionaryGetValue (
   CFDictionaryRef theDict,
   const void *key
);

Вам нужно будет #import <CoreFoundation/CoreFoundation.h> и, возможно, добавить инфраструктуру CoreFoundation в свой проект.

При создании словаря укажите NULL для структур обратного вызова ключа и значения, чтобы указать, что вы не хотите, чтобы они сохранялись.

0 голосов
/ 17 октября 2010

Если можете, используйте карту C ++:

std::map<id, id> map;
map.insert(std::make_pair(key, value));

Вам нужно изменить расширение файла на .mm.Также обратите внимание, что он не сохранит ваши значения.

...