類別,非正式協議,正式協議

2021-06-22 07:35:42 字數 731 閱讀 6103

類別,非正式協議,正式協議

1類別:

1.1 不能新增新的例項變數

1.2 如果一定要在類別中使用例項標量,可以使用全域性變數 關聯 額外變數

注:cocoa中沒有任何真正的私有方法,只要知道物件支援的某個方法名稱,即使.h中沒有宣告,也可以呼叫該方法。個人理解是oc的動態機制

2非正式協議

即建立乙個nsobject的類別(包括nsobject的子類)

注:在oc-2.0 正式協議引入 

@optional 

@required

之後,非正式協議作用就不是很大了。

3.正式協議

@protocol 宣告

注:protocol本身是可以繼承的,比如:

@protocol a

-(void)methoda;

@end

@protocol b

-(void)methodb;

@end

如果你要實現b,那麼methoda和methodb都需要實現。

附:常用頁面**寫法:

protocol hotelgroupsortkindviewdelegate

@end

hotelgroupsortkindviewdelegate 該協議 繼承了 nsobject 協議,所以實現該協議的類也一定要實現 nsobject的協議,由於nsobject基類已經實現了 ,一般類也是nsobject的子類,所以即實現了

非正式協議與正式協議的區別

非正式協議是 類的範疇類 範疇類是語言特徵。通過它,您無需子類化就向某個類增加方法 這意味著幾乎所有的物件都是非正式協議的採納者。非正式協議中的方法不必全部實現。在呼叫某個方法之前,呼叫物件會先檢查目標物件是否實現此方法。在可選協議方法被引入 objective c 2.0 之前,非正式協議實質上是...

Objective C中的類別和非正式協議

在編寫物件導向的程式時,你經常希望向現有的類新增一些新的行為 你總是能夠為物件提供使用這些新方法的新手段。當希望為現有的類增加新行為時,我們通常會建立子類,但是有時候子類並不方便。例如,你可能會希望為nsstring類增加一些新行為,但是你知道nsstring實際上只是乙個類簇的前台表示,因而無法為...

Object C非正式協議與正式協議的區別

這兩個概念困擾我很久了,一直都很像搞清楚到非正式協議和正式協議有什麼區別和聯絡,下面結合網上的資料和自己的看法談談這個問題。一 非正式協議 顯然這個名詞是相對於正式協議而言的。在解釋非正式協議之前,先引用兩段話 1 在 cocoa設計模式 第六章類別的6.3.2把類別用於非正式協議一節中,這樣寫到 ...