//个人理解:委托就是自己不想干的事,来让别人来干。这里名词是委托方和被委托方者,被委托者收到委托来帮委托者来做事(小弟帮大哥大做事
//我们一般用到委托是在被委托者的.h内声明一个协议和对应的协议方法,那么谁遵循了协议谁就是委托者
//好处是:回调传值;
//用到一个例子阐述一下委托的具体含义:租客想让中介帮他找到一处房子
//在main函数内
#import <Foundation/Foundation.h>
#import "Buyer.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Buyer *buyer = [[Buyer alloc] init];
[buyer findMediation];
}
return 0;
}
//创建一个租客类
#import <Foundation/Foundation.h>
#import "Mediation.h"
@interface Buyer : NSObject<PaymentDelegate>//遵循声明的协议 那么就成为了委托者;
-(void)findMediation;
@end
//租客类的.m文件内
#import "Buyer.h"
@implementation Buyer
-(void)findMediation{
NSLog(@"我需要房源");
Mediation *m = [[Mediation alloc] init];
m.delegate = self;//告诉他是遵循了这个协议的对象
[m handle];
}
//协议方法的实现,伴随着回调传值
-(void)payment:(float)money{
NSLog(@"付钱:%.2f",money);
}
//输出结果为:付钱:10
@end
//在被委托者的声明文件(.h)中进行协议的声明
#import <Foundation/Foundation.h>
@protocol PaymentDelegate <NSObject>//声明的协议
-(void)payment:(float)money;//协议方法的声明;
@end
@interface Mediation : NSObject
@property (nonatomic, weak) id<PaymentDelegate> delegate;//遵循协议的对象;
-(void)handle;
@end
//创建一个中介类,也就是被委托者
//在被委托者的声明文件(.h)中进行协议的声明
#import <Foundation/Foundation.h>
@protocol PaymentDelegate <NSObject>//声明一个协议
-(void)payment:(float)money;//声明的协议的方法;
@end
@interface Mediation : NSObject
@property (nonatomic, weak) id<PaymentDelegate> delegate;//遵循协议的对象;
-(void)handle;
@end
//在中介的.m文件内部
#import "Mediation.h"
@implementation Mediation
-(void)handle{
NSLog(@"找到房源,请给钱");
[_delegate payment:10.0];//这是谁遵循协议谁就调用协议方法;回调方法传值;
}
@end