IOS—delegate(委託)

第一篇 委託delegate

幫助理解!

首先 協議protocol 和委託delegate 是兩個完全不同的概念  放在一起說 是因爲我們總是在同一個頭文件裏看到它們;

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

Delegate本身應該稱爲一種設計模式。

是把一個類自己需要做的一部分事情,讓另一個類(也可以就是自己本身)來完成。

比如

設定一個協議方法:delegateMethod 
?
1
2
3
4
5
@protocol MyDelegate 
   
-(void)delegateMethod; 
   
@end

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

?
1
2
3
4
5
6
7
@interface  A : UIViewController <MyDelegate> 
   
@implementation A 
-(void)delegateMethod 
     NSLog(@"delegateMethod"); 
}

在B中定義delegate指針;

?
1
2
3
4
5
6
7
8
9
@interface  B : UIViewController 
 
     id delegate; 
 
 @property(nonatomic,retain) id delegate; 
@end 
    
 @implementation B  
 @synthesize delegate;


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

?
1
B.delegate = self;

B中調用代理方法;

?
1
[delegate delegateMethod];

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章