角色
委托方 = 老板
代理方 = 员工 协议 = 合同说明
委托方传递信息或者事件到代理方,代理方执行相关操作。
翻译:老板把工作材料和工作内容交给员工,员工去干活。
流程
委托方声明协议,并持有委托对象属性,调用代理方执行操作。
翻译:
1. 老板提供合同2. 员工签名3. 老板在他的公司里加上这号人4. 老板分配工作5. 员工干活代码
- 在老板的.h文件里面写好合同
MyView.h//委托方声明协议@protocol MyViewDelegate//可选实现方法@optional -(void)optionalFunc;//必须实现方法@required -(void)requiredFunc;@end复制代码
- 员工签名
MyViewController.m//代理方遵守协议@interface MyViewController ()@property(nonatomic,strong)MyView * myView;@end复制代码
- 老板在他的公司里加上这号人
MyView.h//委托方声明代理属性 注意要用weak修饰@interface MyView : UIView@property(nonatomic,weak)iddelegate;@end复制代码
MyViewController.m@implementation MyViewController- (void)viewDidLoad { [super viewDidLoad]; [self.view addSubview:self.myView];}-(MyView *)myView{ if (!_myView) { _myView = [[MyView alloc] initWithFrame:self.view.bounds]; _myView.backgroundColor = [UIColor whiteColor]; //持有代理 _myView.delegate = self; } return _myView;}@end复制代码
- 老板在自己的.m文件分配工作
MyView.m//调用代理 调用前判断是否有方法实现if ([self.delegate respondsToSelector:@selector(requiredFunc)]) { [self.delegate requiredFunc];}复制代码
- 员工在自己的.m文件干活
MyViewController.m//实现协议方法- (void)requiredFunc{ NSLog(@"requiredFunc");}复制代码