委托方 = 老板
代理方 = 员工
协议 = 合同bash
委托方从代理方拉取数据,代理方传递信息到委托方。ui
翻译:员工收集材料交给老板atom
委托方声明协议并持有委托对象属性,代理方回调数据给委托方。spa
翻译:
1. 老板提供合同
2. 员工签名
3. 老板在他的公司里加上这号人
4. 员工找材料并提交
5. 老板处理材料翻译
MyView.h
@protocol MyViewDataSource <NSObject>
@required
-(NSString *)dataSourceFunc;
@end
复制代码
MyViewController.m
//代理方遵照协议
@interface MyViewController () <MyViewDataSource>
@property(nonatomic,strong)MyView * myView;
@end
复制代码
MyView.h
//委托方声明代理属性 注意要用weak修饰
@interface MyView : UIView
@property(nonatomic,weak)id<MyViewDataSource> dataSource;
@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.dataSource = self;
}
return _myView;
}
@end
复制代码
ViewController.m
//实现数据源方法
-(NSString *)dataSourceFunc{
return @"dataSourceFunc";
}
复制代码
MyView.m
-(void)layoutSubviews{
[super layoutSubviews];
if ([self.dataSource respondsToSelector:@selector(dataSourceFunc)]) {
NSLog(@"%@",[self.dataSource dataSourceFunc]);
}
}
复制代码