协议与委托
这次做项目,用到了一点点协议与委托的东西,把我学到的东西总结一下:
委托和协议是两个概念,协议实际上相当于C++中的纯虚类的概念,只定义并只能由其它类来实现。而委托类似于Java中的接口。
协议@protocol就是多个文件共同遵守,里面的方法默认必须实现@required,也可以设置可选@optional。
委托delegate就是A要实现一个方法,但是A没有,就委托B去实现。委托不一定非要用协议来实现。
在这次的项目中,用到了一点协议与委托。
- 在view.h中声明协议
1 | @protocol XXXDelegate <NSObject> |
- 在view.h的interface中也要声明:
@property (nonatomic, assign) id <XXXDelegate> delegate; // 协议声明'
- 在view.h中像调用对象一样调用delegate:
[self.delegate XXX];
- 在实现委托的文件中,比如viewController中,引入delegate:
@interface XXXTableViewController ()<XXXDelegate>
- 在需要实现协议的控件上:
headView.delegate = self;
- 最后要实现协议中的方法。