對ios中Delegate的理解

最近剛接觸協議@protocol 和委託 delegate 弄得一頭霧水  經過這幾天的學習有了必定的瞭解   :設計模式

首先 協議protocol 和委託delegate 是兩個徹底不一樣的概念  放在一塊兒說 是由於咱們老是在同一個頭文件裏看到它們;學習

首先解釋一下什麼是委託 :舉個例子 ,我工做的時候給你打電話,讓你幫我查某人的電話號碼,把事情交給你後,我繼續工做 過了幾分鐘 你打電話回來告訴我 查到的結果。。。@end     那麼你就是個人委託對象,當你完成事件後 返回給我一個值;這就是委託。也就是   :我.delegete = 你;atom

Delegate自己應該稱爲一種設計模式。spa

是把一個類本身須要作的一部分事情,讓另外一個類(也能夠就是本身自己)來完成。.net

好比設計

設定一個協議方法:delegateMethod
@protocol MyDelegate  
      
    -(void)delegateMethod;  
      
    @end

在A類中實現該協議並實現方法:代理

@interface  A : UIViewController <MyDelegate>  
      
    @implementation A  
    -(void)delegateMethod  
    {  
         NSLog(@"delegateMethod");  
    }

在B中定義delegate指針;指針

@interface  B : UIViewController  
    {  
        id delegate;  
    }  
    @property(nonatomic,retain) id delegate;  
   @end  
      
    @implementation B   
    @synthesize delegate;


A到B的過程當中給delegate指名代理code

B.delegate = self;

B中調用代理方法;對象

[delegate delegateMethod];

這就是B去委託A實現delegateMethod方法;

其實delegate只是一種模式,你們約定俗成,當把本身內部一部分實現暴露給另一個類去作的時候,就叫實際作事的類爲delegate,固然你也可你把它命名爲任何名字;   

這只是個人我的理解,但願能夠給剛涉及這方面的同窗一點點啓示, 不妥的地方請批評指正~~~~

相關文章
相關標籤/搜索