一.代理实现
1.新建两个类PersonOne和PersonTwo,PersonOne有件事需要做,打算交给别人去做。那么PersonOne有一个协议:
@protocol SomeThing <NSObject> -(NSString *)doSomeThing:(NSString *)str; @end
PersonOne开始招人
@interface PersonOne : NSObject @property (weak) id delegate; @end
2.PersonTwo发现自己能做这件事,于是去应聘了。引入delegate类
#import <Foundation/Foundation.h> #import "PersonOne.h" @interface PersonTwo : NSObject<SomeThing> @end
并且PersonTwo要会做这件事
#import "PersonTwo.h" @implementation PersonTwo - (NSString *)doSomeThing:(NSString *)str{ return str; } @end
3. 实现委托人和被委托人关联
PersonOne *pA = [[PersonOne alloc]init]; PersonTwo *pB = [[PersonTwo alloc]init]; pA.delegate = pB;
4.委托关系确定后,委托人去做这件事吧
if(pA.delegate && [pA.delegate respondsToSelector:@selector(doSomeThing:)]){ [pA.delegate doSomeThing:@"hello world"]; }
5总结
代理这个设计模式主要用于传值,比如两个页面,a页面跳转到b页面,当b页面发生某些改变时需要通知页面a知道,那么就可以用代理来实现
未来的你会感谢今天努力的自己
------Alen