iOS 协议 数据源 dataSource

角色

委托方 = 老板
代理方 = 员工
协议 = 合同


说明

委托方从代理方拉取数据,代理方传递信息到委托方。

翻译:员工收集材料交给老板


流程

委托方声明协议并持有委托对象属性,代理方回调数据给委托方。

翻译:
1. 老板提供合同
2. 员工签名
3. 老板在他的公司里加上这号人
4. 员工找材料并提交
5. 老板处理材料


代码

  1. 在老板的.h文件里面写好合同
MyView.h

@protocol MyViewDataSource <NSObject>
@required 
-(NSString *)dataSourceFunc;
@end
复制代码

  1. 员工签名
MyViewController.m

//代理方遵守协议
@interface MyViewController () <MyViewDataSource>
@property(nonatomic,strong)MyView * myView;
@end
复制代码

  1. 老板在他的公司里加上这号人
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
复制代码

  1. 员工找材料并提交
ViewController.m

//实现数据源方法
-(NSString *)dataSourceFunc{
    return @"dataSourceFunc";
}
复制代码

  1. 老板处理材料
MyView.m

-(void)layoutSubviews{
    [super layoutSubviews];
    if ([self.dataSource respondsToSelector:@selector(dataSourceFunc)]) {
        NSLog(@"%@",[self.dataSource dataSourceFunc]);
    }
}
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值