// // main.m // ProxyDemo // // Created by 千雅爸爸 on 16/10/7. // Copyright © 2016年 kodulf. All rights reserved. // #import <Foundation/Foundation.h> #import "Worker.h" #import "Boss.h" int main(int argc, const char * argv[]) { @autoreleasepool { //代理模式下:两个角色:代理方,委托方 //有点像java的监听setonclicklistener,但是不是 //程序当中的单独的一个类,无法完成其他的工作的时候,当另外一个类可以玩橙过的时候,可以通过这样来做。 //0:首先确认委托方和代理者, //1:委托方来指定协议和设置属性, //2:让代理方去遵守协议,实现方法 //3:设置代理 //boss让worker 去买东西 Worker *worker = [[Worker alloc] init]; Boss *boss = [[Boss alloc]init]; [boss setDelegate:worker]; [boss sendCommand]; } return 0; }
// // Boss.h // ProxyDemo // // Created by 千雅爸爸 on 16/10/7. // Copyright © 2016年 kodulf. All rights reserved. // #import <Foundation/Foundation.h> //协议可以直接写在委托方这里 @protocol BossDelegate <NSObject> -(void)buywood; @end //+++++++++++++协议结束+++++++++ @interface Boss : NSObject //这里使用这个属性是为了设置代理 @property (nonatomic,strong) id <BossDelegate> delegate; -(void)sendCommand; @end
// // Boss.m // ProxyDemo // // Created by 千雅爸爸 on 16/10/7. // Copyright © 2016年 kodulf. All rights reserved. // #import "Boss.h" @implementation Boss -(void)sendCommand{ NSLog(@"send command"); [self.delegate buywood]; } @end
// // Worker.h // ProxyDemo // // Created by 千雅爸爸 on 16/10/7. // Copyright © 2016年 kodulf. All rights reserved. // #import <Foundation/Foundation.h> #import "Boss.h" //要想成为boss的代理,必须要实现协议 @interface Worker : NSObject <BossDelegate> @end
// // Worker.m // ProxyDemo // // Created by 千雅爸爸 on 16/10/7. // Copyright © 2016年 kodulf. All rights reserved. // #import "Worker.h" @implementation Worker -(void)buywood{ NSLog(@"工人买木头"); } @end