什么是委托代理模式
定义一套接口(也就是协议),某对象若想接受另一个对象的委托,则需要遵循此接口(协议),以便成为其”委托对象”,而这“另一个对象”则给其委托对象回传一些消息,也可以在发生相关时间时通知委托对象
创建过程
定义委托方法
创建委托对象,委托对象实现委托协议
在另一个类声明委托对象,和出发委托对象方法的方法
例子
正常人无法买票 需要委托代理才能买票
People.h
只有拥有BuyTicket协议的人才能成为代理
#import <Foundation/Foundation.h>
#import "BuyTicket.h""
NS_ASSUME_NONNULL_BEGIN
@interface People : NSObject
@property (nonatomic,weak) id<BuyTicket> agent;//一般是weak
-(void)letAgentBuy;
@end
People.m
#import "People.h"
@implementation People
-(void)letAgentBuy
{
NSLog(@"委托Agent买");
if(self.agent == nil)
{
NSLog(@"没有委托人!");
return;
}
if([self.agent respondsToSelector:@selector(buy)])//需要判断当前这个agent是否能执行buy消息 如果不能 又调用了buy函数就会导致崩溃
{
[_agent buy];
}
else
{
NSLog(@"该代理不能购买!购买失败!");
}
}
@end
BuyTicket.h 也就是协议
只有拥有这个协议的人才能买票
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@protocol BuyTicket <NSObject>
-(void)buy;
@end
Agent.h
#import <Foundation/Foundation.h>
#import "BuyTicket.h"
NS_ASSUME_NONNULL_BEGIN
@interface Agent : NSObject<BuyTicket>
@end
Agent.m
#import "Agent.h"
@implementation Agent
-(void)buy
{
NSLog(@"购买成功!");
}
@end
版权声明:本文为qq_43535469原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。