2012-08-15 53 views

回答

1
NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"one", @"two", nil]; 

創建一個可變數組對象與串上的存儲器@「一個且@」二」 ..和製造陣列對象指針array1指向該對象在內存中。

enter image description here

NSMutableArray *array2 = array1; 

創建NSMutableArray類型的另一個指針array2,並使其指向array1指向的內存中的同一對象。

enter image description here

[array2 removeAllObjects]; 

從由數組2

enter image description here

現在,因爲數組1和數組2指向同一個對象在內存中指出,可變數組對象中刪除所有的字符串時,array1和數組2將現在指向內存中沒有對象的可變數組對象。

+0

謝謝。您可以通過單擊圖像圖標將圖像添加到答案中,圖像圖標位於輸入答案的文本框正上方菜單欄上的*代碼示例*和*編號列表*圖標之間。 – 2012-08-16 01:46:38

2

首先,你有沒有試過看看會發生什麼? :)這應該馬上回答你的問題。至於爲什麼它發生,這是因爲在這個實例中只有一個數組。 array2只是指向array1的指針(即它們都指向相同的NSMutableArray實例)。所以是的,如果你使用array1來引用這個數組,你會發現它是空的。

現在,如果你有以下:

NSMutableArray *array2 = [NSMutableArray arrayWithArray:array1]; 
[array2 removeAllObjects]; 

array1仍會有它的元素,因爲array2是一個全新的NSMutableArray實例。

1

如果您需要知道對象是否不同。你可以做==比較。或者檢查%p指針值。

if (array1 == array2) { NSLog(@"These variables point to the same array"); } 

NSLog(@"Address of Array1 is (%p) Address of Array2 is (%p)",array1, array2); 

這會給你一些想法,當id對象不同或是完全相同的對象。

如果指針是相同的值。他們是同一個對象。當對象指針的值相同時,(obj1 == obj2)將導致YES

相關問題