你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> ios中的代理與協議(delegate)

ios中的代理與協議(delegate)

編輯:IOS開發綜合

 

 

一、理解協議與代理

 

協議

 

協議的格式:@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];


 

 

 

 

 

 

 

 

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

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

 

 

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

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


 
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved