黑馬程式設計師 protocol協議

2021-06-21 21:45:42 字數 1323 閱讀 7470

------- 

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關鍵字進行...