標籤:
總結一下:
delegate是一個方式,程式組成單元之間分工的一種協調思想
protocal 這個東西不能單獨說,要與它相關的兩個主要東西一起說,一個是 委託者 通常是VIEW, 一個是被委託者 通常是某個CONTROLLER
它主要用來預先定義出來一個協議,可以理解為TCP/IP協議的思想,大家即 服務端、用戶端 都按這個TCP/IP的協議規範來 溝通。
既然把它叫一個協議,那它一定有一個明確具體的定義,定義它有什麼功能,即行為,或叫幹什麼事。
這個所謂的幹什麼事,就是預先定義出來,給委託者調用(由被委託者實現,協議只是定義一個行為的名字和相應的參數及類型),定義也定義好了。
下面就是,被委託者FOLLOW這個協議,然後實現它。委託者就可以設定自己的委託人是人,就是設定被委託人的引用到自己的DELEGATE屬性上。
anyController.delegate = self. SELF這個類裡去實現協議方法。
那麼委託者有了具體的委託人了,就可以有效進行調用 這個協議裡預先定義過的方法了。
委託者在類定義的標頭檔中也需要聲明好一個 DELEGATE的屬性 (@PROPERTY ID<PROTOACALNAME> delegate 這種形式)。
那這樣一個有機的配合機制就出來了,這幾者之間的一個明確的協調工作方式就完成了。
即,VIEW & CONTROLLER 雙方都遵守了 PROTOCAL協議,如同服務端 與 用戶端都 遵循實現了 TCP/IP協議
//-----------------------------------------------------------------------------------------------------------------Concolusion
PROTOCAL 用來定義預期的行為 @protocal { -(void)method_name;} @end
VIEW用來調用PROTOCAL定義的行為, 調用形式即 [view.delegate method_name_defined_in_protoal];
CONTROLLER用來實現PROTOCAL定義的行為,且,CONTROLLER被設定為VIEW的DELEGATE。即傳引用給CONTROLLER的DELEGATE屬性。 view.delegate = self;
會讓整個程式模組功能之間的協作很清晰,它不是唯一的好方式,但確是一種好方式。
IOS Delegate & protocal