我想弄清楚如何创建一个NSMutableDictionary保留而不是复制其密钥。我已经实现 - (NSUInteger)哈希和 - (id)isEqual:对于我想要的键,我只是无法找出哪些选项要在回调中指定。NSMutableDictionary,保留其键
CFDictionaryKeyCallBacks keyCallbacks = { 0, NULL, NULL, CFCopyDescription, CFEqual, NULL };
self.commonParents = (NSMutableDictionary*)CFBridgingRelease(CFDictionaryCreateMutable(nil, 0, &keyCallbacks, &kCFTypeDictionaryValueCallBacks));
上面的代码工作正常在ARC使用弱引用到钥匙,但如果我想要的强引用?关键回调应该是什么样子?
为什么你觉得有必要改变字典如何处理它的密钥?为什么你的代码依赖于被保留的键而不是被复制?如果我们知道你为什么要这样做,可能会有更好的解决方案。 – rmaddy 2013-02-24 18:28:33
我第二个rmaddy的问题。此外,如果使用非标准字典,则CFDictionary不再安全地转换为“NSMutableDictionary *”。这些类型之间的免费桥接隐式依赖于使用标准CFType回调函数的CFDictionary。最后,你看看'NSMapTable'吗? – 2013-02-24 18:36:37
我遇到过足够的情况,我曾经想过在'NSDictionary'周围有些不同的内存管理语义,这似乎不合理。 – 2013-02-24 18:45:16