在這裏使用一個基本的目標c示例,試圖使用replaceObjectAtIndex爲一個數組,它似乎並沒有工作。replaceObjectAtIndex似乎沒有工作
我的代碼:
NSMutableArray *myArray=[NSMutableArray array];
[myArray addObject:@"First string"];
[myArray addObject:@"Second string"];
[myArray addObject:@"Third string"];
NSString *newElement=[myArray objectAtIndex:1];
NSLog(@"New object at index 1 BEFORE is %@", newElement);
[myArray replaceObjectAtIndex:1 withObject:@"Hello"];
NSLog(@"New object at index 1 AFTER is %@", newElement);
理論上輸出爲newElement現在應該顯示 「Hello」,但它仍然顯示 「第二個字符串」
輸出:
2012-05-30 11:21:16.638 cocoa lab[753:403] New object at index 1 BEFORE is Second string
2012-05-30 11:21:16.641 cocoa lab[753:403] New object at index 1 AFTER is Second string
請告知
謝謝
嗯,認爲爲newElement是一個指針數組的元素1,所以當該元素得到了改變,爲newElement將反映它。可能不會。感謝你的回答。 – Live2Enjoy7
C樣式陣列按照您描述的方式工作。指向數組的指針只是指向第一個元素的指針,然後可以添加元素大小的一些倍數,以獲取指向數組下方的元素的指針。目標C'NSArray's是另一方面的對象。數組中的元素也是對象。所有的指針都指向實際的對象,而不是數組中的某個佔位符。 –
@ Live2Enjoy7'newElement'是一個局部變量,它包含一個指向對象的指針。如果不重置指針指向某個其他對象,它仍然指向原始對象。 – jlehr