我需要相關修改存儲在目標C可變容器對象一些澄清/建議。 比方說,我有一個名爲NSMutableArray
其中countries
裏面有一些存儲每個country
細節NSMutableDictionaries
。在可變容器Objective-C的改性元素
NSMutableArray *countries = [[NSMutableArray alloc] init];
NSMutabelDictionary *country = [[NSMutableDictionary alloc] init];
[country setObject: @"United States" forKey: @"Name"];
[countries addObject: country];
後來我想修改存儲在countries
一個country
。我可以做到這一點無論是作爲:
[[countries objectAtIndex: 0] setObject: @"United States of America" forKey: @"Name"];
或爲:
的結果是一樣的。隨着我的C++的背景下,我首先想到的是cnt
將在countries
駐留在位置0的對象的副本後,我修改我必須把修改的對象爲countries
。然而,陣列countries
仍然持有,即使我不把它的replaceObjectAtIndex
消息更新country
對象。
我將不勝感激就如何處理這種情況一些建議。用新的變量容器顯式替換可變容器中的修改對象是否更好?還是完全沒有必要?
確實完全沒有必要。請參閱:http://stackoverflow.com/questions/5915711/can-we-use-nsmutable-objects-as-members-of-a-non-nsmutable-class/5915831#5915831 – 2011-05-12 23:38:59
的Objective-C沒有功能如C++中的傳值或複製語義。 – 2011-05-12 23:41:28
好的,如果我從數組'國家'中刪除'country',該怎麼辦?我從數組中移除後仍然需要釋放'country'字典嗎?根據評論我會承擔是的,但是當我嘗試這個時,程序崩潰了。 – kadam 2011-05-13 00:00:58