類
1.obj-c中沒有private的概念奋构,可認(rèn)為全是public的
2.類的類型成員 Type Member
??? ? 1)實例變量 instance variable 不能被外部訪問
??? ? 2 ) 屬性 property 編譯器會為屬性定義一個getter方法:propertyName,一個setter方法:setPropertyName,和一??? 個實例變量_propertyName,如果屬性被定義成只讀屬性,則只有g(shù)etter方法虑润。
????? 3)除了init和dealloc方法內(nèi),使用實例變量來訪問加酵,其他一律使用屬性來訪問拳喻,類內(nèi)也使用self.屬性 訪問
3.類方法和實例方法,方法前減號為實例方法猪腕,方法前加號為類方法冗澈。
?? 類方法可以直接調(diào)用,不需要創(chuàng)建類的實例陋葡,而實例方法只能通過類的實例對象才能調(diào)用亚亲。
4.方法的調(diào)用,在obj-c中被稱為消息機制,寫在中括號內(nèi) 捌归,eg: [class foo];
5.類聲明以 @interface 類名:繼承名 開頭肛响,以 @end 結(jié)尾,類實現(xiàn)以@implementation 類名 開頭惜索,以 @end 結(jié)尾特笋;
6.類的創(chuàng)建需要兩步
??? 1)alloc 請求內(nèi)存分配,并把所有屬性置零门扇,指針置空
??? 2)init 初始化雹有,可以根據(jù)參數(shù)需要自定義初始化方法,需要前置調(diào)用父類的初始化器 [super init]
??? 3) new? == alloc + init? 無參數(shù)版本
7.對象析構(gòu)器 dealloc 在釋放對象內(nèi)存前自動調(diào)用臼寄,無法手工調(diào)用霸奕,子類的dealloc會調(diào)用父類的dealloc(后置調(diào)用)
8.每個類都有且只有1個基類,NSObject 是所有類的根類吉拳。
? 子類會自動繼承基類的 實例變量质帅,屬性,實例方法和類方法
9.多態(tài) :子類在父類統(tǒng)一的接口下留攒,通過重寫方法來進(jìn)行不同的操作行為
?? self具有多態(tài)性煤惩,可以指向不同子類
??? super沒有多態(tài)性,僅指向當(dāng)前父類
10.盡量避免在父類的init和dealloc中調(diào)用子類重寫的方法
??