第一篇 委託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,當然你也可你把它命名爲任何名字;