您的位置:首页 > 其它

代理的回调的例子

2015-09-08 08:19 441 查看
/*就是这*********************************

回调函数不是由该函数的实现方法直接调

用,而是在特定的事件或条件发生时由另外的一
方调用的,用于对该事件或条件进行响应。


回调:.......................................................................................

委托方:huangwenjia 遵从协议,实现回调的方法,设定代理方

代理方:wushentao持有协议id指针,用于设定委托方

回调………………………………………………………………

*/

//.main

#import <Foundation/Foundation.h>

#import "HuangWenJia.h"

#import "WuShenTao.h"

int main(int argc, const char * argv[]) {

//创建了委托方

HuangWenJia *huang=[[HuangWenJia alloc] init];

//创建代理方

WuShenTao *wu=[[WuShenTao alloc] init];

//确立两者之间的代理关系

huang.delegate=wu;

wu.agent=huang;

//处理打蚊子

[huang doWork];

return 0;

}

//DaWenProtocol.h

//打蚊子的协议

#import <Foundation/Foundation.h>

@protocol DaWenProtocol <NSObject>

//回调方法的定义

//告诉委托方,我代理方打了几只蚊子

- (void)dawenNum:(int)num;

@end

//HuangWenJia.h

//委托方

#import <Foundation/Foundation.h>

#import "DaWenProtocol.h"

#import "WuShenTao.h"

@interface HuangWenJia : NSObject<DaWenProtocol>

//设定他的代理方

@property (nonatomic,strong) WuShenTao *delegate;

//处理打蚊子

- (void)doWork;

@end

//HuangWenJia.m

#import "HuangWenJia.h"

@implementation HuangWenJia

- (void)dawenNum:(int)num

{

NSLog(@"我打了%d只蚊子",num);

}

- (void)doWork

{

//把打蚊子的事情委托给代理方

[self.delegate daWen];

}

@end

//WuShenTao.h

//代理方

#import <Foundation/Foundation.h>

#import "DaWenProtocol.h"

@interface WuShenTao : NSObject

//设定委托方

//持有协议的id指针

@property (weak) id<DaWenProtocol> agent;

//打蚊子的方法

- (void)daWen;

@end

//WuShenTao.m

#import "WuShenTao.h"

@implementation WuShenTao

- (void)daWen

{

NSLog(@"开始打蚊子");

//当蚊子打完的条件满足了,就需要把具体打的蚊子的数量反馈回委托方

//回调

[self.agent dawenNum:20];

}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: