Objective-C语言——委托模式(代理模式)
2016-01-03 12:08
411 查看
Landlord.h
Landlord.m
HouseSaler.h
HouseSaler.m
运行结果
2016-01-03 12:04:07.810 OC_LX_10_02[3033:73547]
我是中介,我替卖家卖房子
2016-01-03 12:04:07.811 OC_LX_10_02[3033:73547]
我是房东,我已经将房子登记到中介处了
2016-01-03 12:04:07.812 OC_LX_10_02[3033:73547]
我是中介,我与房东签了协议,我必须替房东卖掉房子
2016-01-03 12:04:07.812 OC_LX_10_02[3033:73547]
我是中介,我卖掉房东了,钱我给你了
2016-01-03 12:04:07.813 OC_LX_10_02[3033:73547]
我是房东,我收到钱了
#import <Foundation/Foundation.h> #import "HouseSaler.h" @interface Landlord : NSObject //这里最简单的委托模式 //这里使用 assign 是为了防止循环引用 //@property(nonatomic,assign) HouseSaler *delegate; //使用正式协议的委托模式 @property (nonatomic,assign) id <Landlor_Protocol> delegate; //登记房子 -(void)registerHouse; //用于表示房东收到款了 -(void)registerMoney; @end
Landlord.m
#import "Landlord.h" @implementation Landlord -(void)registerHouse { NSLog(@"我是房东,我已经将房子登记到中介处了"); // //如果委托存在,调用委托的方法 // if (self.delegate) { // [self.delegate saleHouse]; // } //如果委托存在,并且委托遵循指定协议 if (self.delegate && [self.delegate conformsToProtocol:@protocol(Landlor_Protocol)]) { [self.delegate mustSaleHouse]; [self.delegate payMoney]; } } -(void)registerm { NSLog(@"我是房东,我收到钱了"); } -(void)registerMoney { NSLog(@"我是房东,我收到钱了"); } @end
HouseSaler.h
#import <Foundation/Foundation.h> #import "Landlor_Protocol.h" @class Landlord;//.h文件声明@class .m文件用#improat导入类 @interface HouseSaler : NSObject <Landlor_Protocol> @property(nonatomic,assign) Landlord *customer; -(void)saleHouse; @end
HouseSaler.m
#import "HouseSaler.h" #import "Landlord.h" @implementation HouseSaler -(void)saleHouse { NSLog(@"我是中介,我替卖家卖房子"); } //实现协议里卖房子的方法 -(void)mustSaleHouse { NSLog(@"我是中介,我与房东签了协议,我必须替房东卖掉房子"); } -(void)payMoney { NSLog(@"我是中介,我卖掉房东了,钱我给你了"); [self.customer registerMoney]; } @end
运行结果
2016-01-03 12:04:07.810 OC_LX_10_02[3033:73547]
我是中介,我替卖家卖房子
2016-01-03 12:04:07.811 OC_LX_10_02[3033:73547]
我是房东,我已经将房子登记到中介处了
2016-01-03 12:04:07.812 OC_LX_10_02[3033:73547]
我是中介,我与房东签了协议,我必须替房东卖掉房子
2016-01-03 12:04:07.812 OC_LX_10_02[3033:73547]
我是中介,我卖掉房东了,钱我给你了
2016-01-03 12:04:07.813 OC_LX_10_02[3033:73547]
我是房东,我收到钱了
相关文章推荐
- objectarx开发的环境设置
- 在Objective-c里面使用property教程
- dynamic、object、var 之间的区别
- 个人理解的IOS开发Objective-C中的属性readwrite,readonly,retain,assign,copy,nonatomic,strong,weak.
- setObject()用法
- NSString用法,object-C数组以及字符串拼接和分割
- Objective-C学习日志3
- Objective-C中的单例模式(工具类)
- java重写Object类方法
- Objective-C语言——单例模式
- Objective-C语言——Protocol协议
- Objective-C语言——Extension延展
- C#中var、int、object性能比较
- C#中var、int、object性能比较
- Objective-C语言——Category类目
- ES6学习——新的语法:对象字面量扩展(Object Literal Extensions)
- Objective-C轻量级泛型
- [2]姥爷幽默谈Objective-C(数组和字典)
- Super Object Toolkit (支持排序)
- Objective-C History