郝萌主傾心貢獻(xiàn),尊重作者的勞動(dòng)成果,請(qǐng)勿轉(zhuǎn)載。
你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)網(wǎng)站建設(shè)、手機(jī)網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)頁制作、做網(wǎng)站、建網(wǎng)站。創(chuàng)新互聯(lián)擁有實(shí)力堅(jiān)強(qiáng)的技術(shù)研發(fā)團(tuán)隊(duì)及素養(yǎng)的視覺設(shè)計(jì)專才。
如果文章對(duì)您有所幫助,歡迎給作者捐贈(zèng),支持郝萌主,捐贈(zèng)數(shù)額隨意,重在心意^_^
我要捐贈(zèng): 點(diǎn)擊捐贈(zèng)
Cocos2d-X×××:點(diǎn)我傳送
將一個(gè)變量賦值給另一個(gè)對(duì)象僅僅創(chuàng)建另一個(gè)對(duì)這個(gè)對(duì)象的引用。
類似于Java中,賦值是一個(gè)引用。
參考C++或者C的指針來理解就容易了。這里的賦值其實(shí)就是指針地址賦值而已。
Foundation類實(shí)現(xiàn)了名為copy 和 mutableCopy的方法,可以使用這些方法創(chuàng)建對(duì)象的副本。
通過實(shí)現(xiàn)一個(gè)符合
注意,產(chǎn)生一個(gè)對(duì)象的可變副本并不要求被復(fù)制的對(duì)象本身是可變的。同樣,可以創(chuàng)建可變對(duì)象的不可變副本。
淺復(fù)制和深復(fù)制:
mutableCopy方法復(fù)制數(shù)組時(shí),在內(nèi)存中為新的數(shù)組對(duì)象分配了空間,并且將單個(gè)元素復(fù)制到新數(shù)組中。
然后將原始數(shù)組中的每個(gè)元素復(fù)制到新位置意味著:僅將引用從一個(gè)數(shù)組元素復(fù)制到另一個(gè)數(shù)組元素。
這樣做的結(jié)果,就是兩個(gè)數(shù)組中的元素都指向內(nèi)存中的同一個(gè)字符串。
若要為數(shù)組中的每個(gè)元素創(chuàng)建完全不同的副本,需要執(zhí)行所謂的深復(fù)制。
實(shí)現(xiàn)
注意,如果想要區(qū)分可變副本和不可變副本,
還需要根據(jù)
如果兩個(gè)方法都實(shí)現(xiàn),那么copyWithZone:應(yīng)該返回不可變副本,
而mutableCopyWithZone:將返回可變副本。
屬性并沒有mutableCopy特性。
即使是可變的實(shí)例變量,也是使用copy特性,正如方法copyWithZone:的執(zhí)行結(jié)果。
所以,按照約定會(huì)生成一個(gè)對(duì)象的不可變副本。