委托模式

//个人理解:委托就是自己不想干的事,来让别人来干。这里名词是委托方和被委托方者,被委托者收到委托来帮委托者来做事(小弟帮大哥大做事

//我们一般用到委托是在被委托者的.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

原文地址:https://www.cnblogs.com/wpw19920808/p/5022176.html