我想弄清楚如何創建一個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