【应用场景】
当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。
【优势】
解耦合(减弱对象之间的耦合程度)
【应注意】
不稳定。
个人觉得在调用委托的时候容易出现程序崩溃,例如我声明了委托类:LCLChatDelegate.h 中的一个接收到信息的委托:
-(void)didReciveZiXun:(NSDictionary *)zixunDic;
实现委托方法的可能会在最近界面或者聊天界面,当有信息推送过来,Appdelegate调用委托的时候有时就会崩溃,有可能因为委托没置空,或者没判断是否有实现委托了,例如:判断respondsToSelector:@selector(didReciveZiXun:)
【敏捷原则】
开放-封闭原则(对于扩展是开放的,对于更改是封闭的)
【实例】
例1.tableview的 数据源delegate,通过和protocol的配合,完成委托诉求,例如:列表row个数delegate
例2.独立声明委托类,如下:
调用委托,如下:
实现委托,如下: