-------
ios培訓
、android培訓
、期待與您交流! ----------
protocol用來宣告一大堆方法,(但是不宣告成員變數)
只要某乙個類遵守了這個協議,那麼這個類就擁有了協議裡的所有的方法。
協議protocol與分類一樣不能宣告屬性,但是不同的是分類是給某個類擴充套件一些方法,但是只要乙個類遵守了協議protocol就可以擁有協議中的所有的方法,
遵守協議的方式是用<>如下:
@inte***ce person : nsobject
protocol的方法宣告有兩種@required和@optional
這兩個關鍵字主要用來程式設計師之間的交流,告訴別人哪些方法是必須是實現的。
@protocol myprotocol
//@required關鍵字宣告的方法要求必須實現,沒有實現就會出現警告
@required
- (void)test;
//可以選擇實現的方法
@optional
- (void)test2;
@end
如果乙個類的父類遵守了協議,那麼這個類也遵守了協議。
乙個類雖然只能是單繼承,但是乙個類可以遵守多個協議如下
@inte***ce person : nsobject
協議遵守協議
乙個協議可以遵守多個其他協議,協議之間用逗號隔開
乙個協議遵守了其他協議,就相當於擁有其他協議中宣告的方法
@protocol 協議 《協議1,協議2>
基協議是乙個基類,所有的其它的類都遵守這個類。其實還有乙個協議,叫做nsobject,它是乙個基協議,最根本的基協議。
nsobject協議中宣告了很多最基本的方法,如-description,retain,release等
建議每乙個協議都遵守基協議
協議使用的主要場合:**模式和觀察者模式
也可以使用protocol協議限制物件型別
如
nsobject* obj;
這樣限制了只能是遵守myprotocol協議的物件才能賦值給obj指標。
協議也可以像類一樣宣告使用@protocol myprotocol ,但是在要在.m檔案中#import協議的標頭檔案。
協議也可以不單獨定義在乙個單獨的檔案裡,可以和某乙個類的標頭檔案中一塊定義。當只有乙個類才遵守某乙個協議的時候,這時候這個協議和類的標頭檔案放在一塊 。當乙個協議需要多個類去遵守的時候,才將協議宣告在乙個單獨的檔案裡。
黑馬程式設計師 block 和 protocol的使用
一 block 1.block 是在函式執行時,儲存的一段 block是同函式一樣是有返回值的,並且可以帶形參。下面的例子是分別展示了無引數和有引數,有無返回值的block的具體實現 沒有引數,沒有返回值的block的定義,且後面函式體的小括號在無引數是可以省略 void myblock void ...
黑馬程式設計師 協議
正式協議是乙個命名的方法列表。但與非正式協議不同的是,正式協議要求顯式地採用協議。採用協議的方法是在類的 inte ce宣告中列出協議的名稱。採用協議意味著你承諾實現協議的所有方法。否則,編譯器將發出警告提醒。宣告協議 例如cocoa宣告的乙個協議 nscopying property nscopy...
黑馬程式設計師 OC基礎10 Protocol協議
asp.net unity開發 net培訓 期待與您交流!一 概念 協議類似於介面,用來宣告方法,乙個類遵守了協議,就等於擁有了這個協議中所有方法的宣告 二 作用 在 模式中經常用來規定物件必須具有的某些行為 三 使用方法 1 協議只有宣告沒有實現,所以只有.h檔案,使用 protocol關鍵字進行...