代理作用之二:代理回调(反向传值)
来源:互联网 发布:装企叁度erp软件 编辑:程序博客网 时间:2024/04/27 20:46
员工工作一个月后,让老板来发工资
主动方:员工,制定协议:让遵守协议的对象发钱
被动方:老板,遵守协议,实现协议中的发工资的方法
调用方是遵守协议者,被调用方是制定协议者,制定的协议是让被调用方给调用方传送信息。通知调用方一些事件,或者让调用方做一些事,实现了代理的第二个作用,回调。
在上一篇博文中讲述的是广播站和收音机的例子。广播站是制定协议的一方也是调用的方,主要是制定协议让被调用方遵守协议去完成一些事,主要是传值。
*/
代码一:协议
#import <Foundation/Foundation.h>
@protocol SendMoneyDelegate <NSObject>
-(void)sendWage:(int)money;
@end
代码二:工人
#import <Foundation/Foundation.h>
#import "SendMoneyDelegate.h"
@interface JWCWork : NSObject
//此处不能使用retain,只能使用assign,采用弱引用
@property (nonatomic,retain)id <SendMoneyDelegate> delegate;
-(void)tellDelegateSendMoney:(int)money;
-(void)work;
@end
#import "JWCWork.h"
@implementation JWCWork
//通知遵守协议的一方
-(void)tellDelegateSendMoney:(int)money {
[self.delegate sendWage:money];
}
-(void)work {
NSLog(@"worker:辛辛苦苦工作一个月,让老板发工资!");
[self.delegate sendWage:20000];
}
@end
代码三:
#import <Foundation/Foundation.h>
#import "SendMoneyDelegate.h"
#import "JWCWork.h"
@interface JWCBoss : NSObject<SendMoneyDelegate>{
JWCWork *_worker;//被调用方作为调用方的成员变量,收到被调用方的消息
}
//招聘员工的方法
-(void)recruitWorker;
#import "JWCBoss.h"
@implementation JWCBoss
-(void)sendWage:(int)money{
NSLog(@"boss:马上发钱!");
NSLog(@"boss发了%d元钱",money);
}
//这个方法相当于给自己的成员变量赋初值
-(void)recruitWorker{
//主动方往往会创建在被动方的类中
_worker = [[JWCWork alloc]init];//初始化是主动方
//确定委托关系,设置代理
_worker.delegate = self;//把调用方设置为代理
[_worker work];//worker调用自己的方法
}
@end
代码四:
主函数;
#import <Foundation/Foundation.h>
#import "JWCBoss.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
JWCBoss *boss = [[JWCBoss alloc]init];
[boss recruitWorker];
}
return 0;
}
结果 :
老板发工资代理的作用之二回调[367:5713] worker:辛辛苦苦工作一个月,让老板发工资
老板发工资代理的作用之二回调[367:5713] boss:马上发钱!
老板发工资代理的作用之二回调[367:5713] boss发了20000元钱
- 代理作用之二:代理回调(反向传值)
- 反向代理的作用
- 反向代理作用
- 代理反向传值
- ios中控制器之间的反向传值之二---代理传值
- iOS 代理反向传值
- iOS 代理反向传值
- IOS代理反向传值
- iOS 代理反向传值
- iOS 代理反向传值
- nginx学习手札(二)反向代理 (
- Nginx之反向代理
- nginx之反向代理
- nginx之反向代理
- nginx之反向代理
- 正向代理与反向代理之我见
- 反向代理(一)
- iOS 代理,代理是实现反向传值步骤
- 华为上机 亮灯的个数 java
- Nginx入门
- java编写一个分页类
- java中static作用
- 关于项目管理专业人士(PMP)认证考试5P的个人心得
- 代理作用之二:代理回调(反向传值)
- 笔记本电脑显示器不停的闪动怎么办
- HDU 1996 汉诺塔VI
- js
- APP页面的三种基本实现方式:storyboard,xib,代码实现 与自动布局
- mysql的日期查询操作,查询最近一天,一周,一个月
- jsp实现简单的登录与注销功能
- ZOJ 3279 Ants(线段树)
- 353 3D dungeon【bfs】