類別,非正式協議,正式協議
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把類別用於非正式協議一節中,這樣寫到 ...