Недавно я сделал следующее, чтобы получить MutableDictionary, который не копирует свои ключи.
-(NSMutableDictionary*)mutableDictionaryWithRetainedKeys {
CFMutableDictionaryRef dictionary = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
return CFBridgingRelease(dictionary);
}
Если ваши ключи не подчиняются NSCopying и вы хотите избежать предупреждений компилятора при установке ключа / значений, используйте:
CFDictionarySetValue(dictionary, (__bridge const void *)(key), (__bridge const void *)(value));