IOS之Delegate

来源:互联网 发布:易分销 源码 编辑:程序博客网 时间:2024/06/06 09:37

在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的设计过程。