OC使用协议来实现代理模式的方法(以买票为例)
买票代理协议 buyTicket.h
@protocol buyTicket <NSObject>
-(void)buy;
@end
被代理类(想买票的人)
Boss.h
@interface Boss : NSObject
@property(weak,nonatomic) id<buyTicket> ticketDelegate;
-(void)buyTicket;
@end
Boss.m
@implementation Boss
-(void)buyTicket{
if ([self.ticketDelegate respondsToSelector:@selector(buy)]){
[self.ticketDelegate buy];
}
}
@end
代理类(实现买票的人)
AClass.h
@interface AClass : NSObject <buyTicket>
-(void)buy;
@end
AClass.m
@implementation AClass
-(void)buy{
NSLog(@"A买票");
}
@end
在main中的实现(买票)
int main(int argc, const char * argv[]) {
@autoreleasepool {
Boss *boss = [[Boss alloc]init];
AClass *a = [[AClass alloc]init];
boss.ticketDelegate = a;
[boss buyTicket];
}
return 0;
}