一個(gè)已經(jīng)有內(nèi)容的可變數(shù)組: contentArray
需求: 創(chuàng)建一個(gè)新數(shù)組,內(nèi)容和contentArray相同.
方式一:
NSArray *otherArray = contentArray;
方式二:
NSArray *otherArray = [NSArray arrayWithArray:contentArray];
雖然看上去兩種方式產(chǎn)生的otherArray的值相同,但如果[contentArray removeAllObjects]則:
方式一產(chǎn)生的otherArray內(nèi)容會跟隨contentArray一起變?yōu)榭?br>
方式二產(chǎn)生的otherArray內(nèi)容依然存在
為什么會出現(xiàn)這樣的問題呢?
方式一:
實(shí)際上是將`otherArray指針`指向了`contentArray指針`所指向的內(nèi)容,從而使得他們有了相同的值.
但如果他們指向的內(nèi)容變化時(shí), `otherArray`和`contentArray`會一起變化
方式二:
創(chuàng)建`otherArray`的時(shí)候使用的方法`[NSArray arrayWithArray:contentArray]`,通過Apple文檔得知:
`Creates and returns an array containing the objects in another given array.`
可以明確的看出,用這種方式創(chuàng)建的數(shù)組是將`contentArray`中的內(nèi)容添加到了`otherArray`中,
這樣就使得`otherArray`中的每個(gè)對象都和`contentArray`相同,但兩者的地址卻不同,
從而不管哪一方數(shù)組變化(增加/減少),都不會影響到另一方.
需要注意的是:兩個(gè)數(shù)組中的對象地址是相同的,說明如果修改了對象的內(nèi)容,另一個(gè)數(shù)組中的內(nèi)容也會變化.

賦值圖.png