IOS Delegate & protocal

來源:互聯網
上載者:User

標籤:

總結一下:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.