CFUUIDRef
是 a CFType
,您可以使用 anyCFType
作为 a 中的键CFDictionary
:
CFMutableDictionaryRef d = CFDictionaryCreateMutable(
kCFAllocatorDefault,
0,
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
CFUUIDRef u1 = CFUUIDCreateFromString(kCFAllocatorDefault, CFSTR("68753A44-4D6F-1226-9C60-0050E4C00067"));
CFUUIDRef u2 = CFUUIDCreateFromString(kCFAllocatorDefault, CFSTR("68753A44-4D6F-1226-9C60-0050E4C00067"));
CFDictionarySetValue(d, u1, CFSTR("fnord"));
CFShow(CFDictionaryGetValue(d, u2)); // prints "fnord"
不幸的是,在这种情况下,免费桥接不能正常工作,因为在自定义回调之前-copy
会调用 in 的键NSMutableDictionary
(参见http://www.cocoabuilder.com/archive/cocoa/163407-using-nsimages- as-keys-to-dictionary.html#163439)导致崩溃。在任何情况下,使用. 代替都是微不足道的。-setObject:forKey:
CFDictionary
NSDictionary
另一个选择是NSMapTable
如果你想要一个 Objective-C 解决方案:
NSMapTable *t = NSCreateMapTable(NSObjectMapKeyCallBacks, NSObjectMapValueCallBacks, 0);
NSMapInsert(t, u1, CFSTR("fnord"));
NSLog(@"%@", NSMapGet(t, u2)); // prints "fnord"