OC 類(lèi) GeekBand

類(lèi)

1.obj-c中沒(méi)有private的概念,可認(rèn)為全是public的

2.類(lèi)的類(lèi)型成員 Type Member

??? ? 1)實(shí)例變量 instance variable 不能被外部訪問(wèn)

??? ? 2 ) 屬性 property 編譯器會(huì)為屬性定義一個(gè)getter方法:propertyName,一個(gè)setter方法:setPropertyName,和一??? 個(gè)實(shí)例變量_propertyName,如果屬性被定義成只讀屬性,則只有g(shù)etter方法。

????? 3)除了init和dealloc方法內(nèi),使用實(shí)例變量來(lái)訪問(wèn),其他一律使用屬性來(lái)訪問(wèn),類(lèi)內(nèi)也使用self.屬性 訪問(wèn)

3.類(lèi)方法和實(shí)例方法,方法前減號(hào)為實(shí)例方法,方法前加號(hào)為類(lèi)方法。

?? 類(lèi)方法可以直接調(diào)用,不需要?jiǎng)?chuàng)建類(lèi)的實(shí)例,而實(shí)例方法只能通過(guò)類(lèi)的實(shí)例對(duì)象才能調(diào)用。

4.方法的調(diào)用,在obj-c中被稱(chēng)為消息機(jī)制,寫(xiě)在中括號(hào)內(nèi) ,eg: [class foo];

5.類(lèi)聲明以 @interface 類(lèi)名:繼承名 開(kāi)頭,以 @end 結(jié)尾,類(lèi)實(shí)現(xiàn)以@implementation 類(lèi)名 開(kāi)頭,以 @end 結(jié)尾;

6.類(lèi)的創(chuàng)建需要兩步

??? 1)alloc 請(qǐng)求內(nèi)存分配,并把所有屬性置零,指針置空

??? 2)init 初始化,可以根據(jù)參數(shù)需要自定義初始化方法,需要前置調(diào)用父類(lèi)的初始化器 [super init]

??? 3) new? == alloc + init? 無(wú)參數(shù)版本

7.對(duì)象析構(gòu)器 dealloc 在釋放對(duì)象內(nèi)存前自動(dòng)調(diào)用,無(wú)法手工調(diào)用,子類(lèi)的dealloc會(huì)調(diào)用父類(lèi)的dealloc(后置調(diào)用)

8.每個(gè)類(lèi)都有且只有1個(gè)基類(lèi),NSObject 是所有類(lèi)的根類(lèi)。

? 子類(lèi)會(huì)自動(dòng)繼承基類(lèi)的 實(shí)例變量,屬性,實(shí)例方法和類(lèi)方法

9.多態(tài) :子類(lèi)在父類(lèi)統(tǒng)一的接口下,通過(guò)重寫(xiě)方法來(lái)進(jìn)行不同的操作行為

?? self具有多態(tài)性,可以指向不同子類(lèi)

??? super沒(méi)有多態(tài)性,僅指向當(dāng)前父類(lèi)

10.盡量避免在父類(lèi)的init和dealloc中調(diào)用子類(lèi)重寫(xiě)的方法







??

最后編輯于
?著作權(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)容