iOS开发随笔-3

协议与委托

这次做项目,用到了一点点协议与委托的东西,把我学到的东西总结一下:

委托和协议是两个概念,协议实际上相当于C++中的纯虚类的概念,只定义并只能由其它类来实现。而委托类似于Java中的接口。

协议@protocol就是多个文件共同遵守,里面的方法默认必须实现@required,也可以设置可选@optional

委托delegate就是A要实现一个方法,但是A没有,就委托B去实现。委托不一定非要用协议来实现。

在这次的项目中,用到了一点协议与委托。

  • 在view.h中声明协议
1
2
3
4
@protocol XXXDelegate <NSObject>
@optional
- (void)XXX;
@end
  • 在view.h的interface中也要声明:

@property (nonatomic, assign) id <XXXDelegate> delegate; // 协议声明'

  • 在view.h中像调用对象一样调用delegate:

[self.delegate XXX];

  • 在实现委托的文件中,比如viewController中,引入delegate:

@interface XXXTableViewController ()<XXXDelegate>

  • 在需要实现协议的控件上:

headView.delegate = self;

  • 最后要实现协议中的方法。