簡介
NSArray創(chuàng)建之后會在堆中建立一塊區(qū)域A,然后指針MoMo指向這塊區(qū)域A,但是這塊區(qū)域的大小是已經(jīng)確定不能更改的了。但是我們還是能夠看到有setobject的方法,可以向里面添加改變值。這是因為會在堆中在新建一個內(nèi)存區(qū)域B,把原來堆內(nèi)存A中的數(shù)據(jù)復(fù)制到這個堆區(qū)域B中,然后在這個新的區(qū)域B里面添加你setobject進(jìn)去的值,并把棧中的指針對象MoMo指向B。這樣就是說原來A的對內(nèi)存值沒有發(fā)生變化,但是你的指針MoMo在指向新的內(nèi)存區(qū)域B之后指針對應(yīng)的值已經(jīng)變化了。因為B中有A的復(fù)制內(nèi)容,還有最后你新添加進(jìn)去(setobject)的值。
NSMutableArray就是另外一種方式了。說他內(nèi)容可變,就是說原來的堆中內(nèi)存A還是A,但是你添加的值(setobject)直接存放在A中你需要的位置如末尾,全過程中沒有B的存在了。顯然這樣的速度會更快。
用法如下
http://www.tuicool.com/articles/nIrEJv