淺拷貝: 淺拷貝就是對內(nèi)存地址的復(fù)制奈籽,讓目標(biāo)對象指針和源對象指向同一片內(nèi)存空間.
注意:當(dāng)內(nèi)存銷毀的時(shí)候,指向?qū)ο蟮闹羔?必須重新定義,才能使用,否則會出現(xiàn)野指針!
? ? char* str = (char*)malloc(100);
? ? char*?str2?=?str;
iOS中使用retain修飾的屬性,就是淺拷貝!它既可以讓多個(gè)指針指向同個(gè)內(nèi)存空間,又可以release!
深拷貝: 深拷貝是指拷貝對象的具體內(nèi)容已脓,而內(nèi)存地址是自主分配的绎秒,拷貝結(jié)束之后,兩個(gè)對象雖然存的值是相同的,但是內(nèi)存地址不一樣,兩個(gè)對象也互不影響揉忘,互不干涉。
iOS中使用copy修飾的屬性,就是創(chuàng)建個(gè)新對象,它的retain的count為1和舊的屬性沒有關(guān)系!
閑談copy:?copy,需要遵循NSCopying協(xié)議的類,才可以發(fā)送copy的消息! 遵循NSMutableCopying協(xié)議的類才可以發(fā)送mutableCopy消息端铛。
如果想自定義copy 那么就必須遵守NSCopying,并且實(shí)現(xiàn) copyWithZone: 方法泣矛,
如果想自定義一下mutableCopy 那么就必須遵守NSMutableCopying,并且實(shí)現(xiàn) mutableCopyWithZone: 方法。