最近刚接触协议@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,固然你也可你把它命名为任何名字;
这只是个人我的理解,但愿能够给刚涉及这方面的同窗一点点启示, 不妥的地方请批评指正~~~~