代理的回调的例子
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
回调函数不是由该函数的实现方法直接调
用,而是在特定的事件或条件发生时由另外的一 方调用的,用于对该事件或条件进行响应。
回调:.......................................................................................
委托方: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
相关文章推荐
- Wix 安装部署教程(十五) --CustomAction的七种用法
- 罗辑思维
- 遍历递归目录下所有文件或文件夹
- file文件创建等
- 关于在C++中调用system函数
- mysql基础学习1
- 面试题摘选
- android学习—context 和 getApplicationContext()
- 剑指Offer系列---(8)重建二叉树
- hdoj1043,eight
- Android xUtils框架(二) ViewUtils
- SURF VS SIFT
- for_each和generator,generator_n
- PCB阻抗计算
- Leetcode Reverse Integer
- servlet1
- A.3字符串
- 遍历二叉树的递归与非递归算法
- OFFICE2013实现选中单元格所在行、列高亮显示
- 偶尔想法