Landlord.h
#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] 我是房东,我收到钱了