2013-05-21 38 views
0

是否向NSMutableDictionary添加NS​​MutableDictionary創建副本或是否保留指針?是否向NSMutableDictionary添加NS​​MutableDictionary創建副本或者是否保留指針

我希望能夠更新第一的NSMutableDictionary的內容,並用其他的NSMutableDictionary中跟蹤 - 比如...

NSMutableDictionary* dictA = [[NSMutableDictionary alloc] init]; 
    NSMutableDictionary* dictB = [[NSMutableDictionary alloc] init]; 
    [dictA setValue:[NSNumber numberWithInt:1 ] forKey:@"number"]; 
    [dictB setValue:dictA forKey:@"dictA"]; 

    [dictA setValue:[NSNumber numberWithInt:2 ] forKey:@"number"]; 

威爾dictB.dictA.number現在= 2?

+5

嗯,我能想到的一個很好的辦法,找出。嘗試一下。 – picciano

+0

它保持指針。修改內部字典將導致通過外部字典顯示修改。 –

回答

2

是的,它會的。通常,Cocoa集合類只保留添加到它們的對象(目的:通過這種方式,您也可以插入不可複製的對象)。

(帶的CoreFoundation權謀和免費橋接,它是可以實現的NSArray那份它的元素,雖然)。

+0

不總是複製的主要原因是在時間和空間上這樣做效率會非常低。 –

+0

@HotLicks這也是一個很好的理由,但我不認爲值得爭論哪個原因更重要。例如,複製存儲在標記指針中的「NSNumber」只是一個「MOV」(或其他)指令。 – 2013-05-21 20:31:47

+0

NSNumber對象是不可變的,永遠不需要被複制。他們也非常小。相比之下,一個NSMutableDictionary是巨大的,如果每一個引用都創建了一個副本,副本將會很快消耗所有的存儲空間。 –

相關問題