在IOS中我们通过协议来实现多继承,因此,有必要对Delegate的实现掌握好。
首先,我们先掌握如何声明一个协议。
@protocol ViewControllerDelegate <NSObject>
@required
@optional
@end
在上述代码中我们声明了一个ViewControllerDelegate的协议,协议中的@require表示对应的方法必须要被遵循,@optional表示对应的方法可以被选择性遵循。
当我们完成协议的声明之后就要设置对应的代理,设置代理的途经主要有两种,一种是通过对外接口的方式设置,另一种是通过初始化函数的方式设置。
1、对外接口方式设置
@property (nonatomic,weak) id <ViewControllerDelegate> delegate;
2、初始化函数方式设置
- (id)initWithDelegate:(id<ViewControllerDelegate>)pDelegate;
正如前面所讲,我们在声明协议的时候既有@require方法又有@optional方法。如果我们有如下一个方法:
- (void)viewController:(ViewController*)pViewController receivedData:(NSString*)pString;
这个方法在协议中被声明,那么我们就要在代码中实现它,首先,我们会在声明代理的类中调用代理方法:
[_delegate viewController:self receivedData:nil];
这样外界所有遵循这个协议的类就能接受到回调。而我们在遵循协议的类中所要做的事情就是实现代理方法:
- (void)viewController:(ViewController *)pViewController receivedData:(NSString *)pString
{
}
通过上述的整个流程我们就完成了Delegate的设计过程。