objective深淺拷貝

淺復(fù)制和深復(fù)制的區(qū)別?

淺復(fù)制:只復(fù)制指向?qū)ο蟮闹羔槪粡?fù)制引用對(duì)象本身。

深復(fù)制:復(fù)制引用對(duì)象本身。

意思就是說(shuō)我有個(gè)A對(duì)象,復(fù)制一份后得到A_copy對(duì)象后,對(duì)于淺復(fù)制來(lái)說(shuō),A和A_copy指向的是同一個(gè)內(nèi)存資源,復(fù)制的只不個(gè)是一個(gè)指針,對(duì)象本身資源還是只有一份,那如果我們對(duì)A_copy執(zhí)行了修改操作,那么發(fā)現(xiàn)A引用的對(duì)象同樣被修改了,這其實(shí)違背了我們復(fù)制拷貝的一個(gè)思想。深復(fù)制就好理解了,內(nèi)存中存在了兩份獨(dú)立對(duì)象本身。

用通俗的話(huà)就是:

淺復(fù)制好比你和你的影子,你完蛋,你的影子也完蛋

深復(fù)制好比你和你的克隆人,你完蛋,你的克隆人還活著。

類(lèi)別的作用?繼承和類(lèi)別在實(shí)現(xiàn)中有何區(qū)別?

category可以在不獲悉,不改變?cè)瓉?lái)代碼的情況下往里面添加新的方法,只能添加,不能刪除修改。

并且如果類(lèi)別和原來(lái)類(lèi)中的方法產(chǎn)生名稱(chēng)沖突,則類(lèi)別將覆蓋原來(lái)的方法,因?yàn)轭?lèi)別具有更高的優(yōu)先級(jí)。

類(lèi)別主要有3個(gè)作用:

(1)將類(lèi)的實(shí)現(xiàn)分散到多個(gè)不同文件或多個(gè)不同框架中。

(2)創(chuàng)建對(duì)私有方法的前向引用

(3)向?qū)ο筇砑臃终絽f(xié)議。繼承可以增加,修改或者刪除方法,并且可以增加屬性。

類(lèi)別和類(lèi)擴(kuò)展的區(qū)別:

category和extensions的不同在于 后者可以添加屬性。另外后者添加的方法是必須要實(shí)現(xiàn)的。

extensions可以認(rèn)為是一個(gè)私有的category。

objective-c的類(lèi)可以多重繼承嗎?可以實(shí)現(xiàn)多個(gè)接口嗎?category是什么?重寫(xiě)一個(gè)類(lèi)的方式用繼承好還是分類(lèi)好?為什么?

objective-c的類(lèi)不可以多重繼承;可以實(shí)現(xiàn)多個(gè)接口,多繼承在這里是用protocol委托代理來(lái)實(shí)現(xiàn)的,通過(guò)實(shí)現(xiàn)多個(gè)接口可以完成C++的多重繼承;category是類(lèi)別,用category去重寫(xiě)類(lèi)的方法,僅對(duì)本category有效,不會(huì)影響到其他類(lèi)與原有類(lèi)的關(guān)系。

#import跟#include有什么區(qū)別,@class呢,#import<>跟#import”"又什么區(qū)別?

#import是objective-c導(dǎo)入頭文件的關(guān)鍵字,#include是C/C++導(dǎo)入頭文件的關(guān)鍵字,使用#import頭文件會(huì)自動(dòng)只導(dǎo)入一次,不會(huì)重復(fù)導(dǎo)入,相當(dāng)于#include和#pragma once;@class告訴編譯器某個(gè)類(lèi)的聲明,當(dāng)執(zhí)行時(shí),才去查看類(lèi)的實(shí)現(xiàn)文件,可以解決頭文件的相互包含;#import<>用來(lái)包含系統(tǒng)的頭文件,#import""用來(lái)包含用戶(hù)頭文件。

寫(xiě)一個(gè)setter方法用于完成@property(nonatomic,retain) NSString *name,

寫(xiě)一個(gè)setter方法用于完成@property(nonatomic,copy) NSString *name;

-(void)setName:(NSString *) str

{

[str ?retain];

[name ?release];

name ?= ?str;

}

-(void)setName:(NSString *) str

{ ?

id ?t ?= ?[str ?copy];

[name ?release];

name = t;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容