好吧,說我這樣做。移除等於另一個數組的數組對象是否將它們從兩個數組中移除?
NSMutableArray *array1=[NSMutableArray arrayWithObjects:@"poop", @"on", @"your", @"face", nil];
NSMutableArray *array2=array1;
[array2 removeAllObjects];
現在有沒有array1有對象在裏面?
好吧,說我這樣做。移除等於另一個數組的數組對象是否將它們從兩個數組中移除?
NSMutableArray *array1=[NSMutableArray arrayWithObjects:@"poop", @"on", @"your", @"face", nil];
NSMutableArray *array2=array1;
[array2 removeAllObjects];
現在有沒有array1有對象在裏面?
NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"one", @"two", nil];
創建一個可變數組對象與串上的存儲器@「一個且@」二」 ..和製造陣列對象指針array1
指向該對象在內存中。
NSMutableArray *array2 = array1;
創建NSMutableArray類型的另一個指針array2
,並使其指向array1指向的內存中的同一對象。
[array2 removeAllObjects];
從由數組2
現在,因爲數組1和數組2指向同一個對象在內存中指出,可變數組對象中刪除所有的字符串時,array1和數組2將現在指向內存中沒有對象的可變數組對象。
首先,你有沒有試過看看會發生什麼? :)這應該馬上回答你的問題。至於爲什麼它發生,這是因爲在這個實例中只有一個數組。 array2
只是指向array1
的指針(即它們都指向相同的NSMutableArray
實例)。所以是的,如果你使用array1
來引用這個數組,你會發現它是空的。
現在,如果你有以下:
NSMutableArray *array2 = [NSMutableArray arrayWithArray:array1];
[array2 removeAllObjects];
array1
仍會有它的元素,因爲array2
是一個全新的NSMutableArray
實例。
如果您需要知道對象是否不同。你可以做==比較。或者檢查%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
。
謝謝。您可以通過單擊圖像圖標將圖像添加到答案中,圖像圖標位於輸入答案的文本框正上方菜單欄上的*代碼示例*和*編號列表*圖標之間。 – 2012-08-16 01:46:38