ios中的代理與協議(delegate)

來源:互聯網
上載者:User

ios中的代理與協議(delegate)

 

 

一、理解協議與代理

 

協議

 

協議的格式:@protocol關鍵字:協議的聲明

 

例如

@protocol CustomAlertViewDelegate 

協議的方法

 

@optional

//此關鍵字下聲明的方法,是可選實現的方法。

 

@required

//此關鍵字聲明的方法為,必須實現的方法,如果不實現,編譯會警示告,程式運行崩潰。

 

//如果沒有規定方法屬於可選還是必須實現的,預設為@required。

 

@end

二 代理

 

代理是一個抽象的概念,我如果想做一件事情,而我自己並不想做,可以讓別人幫我來做,那麼別人就是我的代理.

 

例如,我想租個房子,我自己比較懶,於是我想到中介加50塊錢的手續約就可以幫我找到房子,我於是給中介打電話,委託中介給我找個房子,此時中介就是我的代理,我委託他幫我找房.

這個例子中,中介就是代理,50塊錢的手續約就是協議.

 

 

 

1.先聲明好協議:建立協議檔案

//協議聲明

 

       @protocol ChangeColorDelegate 


 

//方法

 

     -(void)changeColor;


 

 

 

(2)那麼(A)就需要指定讓誰(委託人)去執行協議。

在A.h中聲明一個屬性 B*delegate;代表委託人(代理)是誰(B類的對象)。

id<協議> delegate;委託人可以是任何實現協議類的對象

//聲明

 

@protocol ChangeColorDelegate;

 

 

//指定代理對象,,

 

 @property(nonatomic,assign)iddelegate;

 

(3)委託人B(代理)就需要遵守協議,並按照協議完成規定的內容。

1.B首先要實現協議 :在B.h中通過<協議名>實現協議。

//實現協議,此時別忘了匯入標頭檔

 

@interface ZYFirstViewController : UIViewController

 

2.需要在B.m中設定代理: a.delegate = self. (self指B類的對象)

// 指定代理

 

second.delegate=self;

 

 

3.實現協議方法。

//實現協議方法

 

-(void)changeColor{    self.view.backgroundColor=[UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1.0];        [self.navigationController popViewControllerAnimated:YES];}


 

 

4.指定代理在什麼情況下執行協議方法。

 

 

// 指定在什麼條件下執行

 

 

    [_delegate changeColor];


 

 

 

 

 

 

 

 

三 代理設計模式的基本思想:兩個對象協同解決問題,通過代理實現對象與對象之間的通訊。

實質:通過傳遞對象,調用方法。

 

 

注意:協議本身不是類,沒有父類並且不能定義執行個體變數,只是對方法的聲明,不進行方法的實現;

協議用於專門聲明被別的類實現的方法,方法功能更靈活。


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.