本文建议结合上篇博文一起学习: 【IOS 开发学习总结-OC-20】★★★objective-c面向对象——协议(protocol)
delegate 是什么
协议和委托/代理关系很密切,代理是种设计模式。delegate是委托/代理模式.委托/代理模式是将一件属于委托者做的事情,交给另外一个被委托者来处理. 为了便于理解,这里都成为统一称为委托(delegate)。
一个标准的委托由如下内容组成:
1.协议的声明——用来声明哪些方法被委托出去
#import <Foundation/Foundation.h>
@protocol SecDelegate <NSObject>
-(void)phone;//打电话
-(void)payoff;//发工资
@end
2.委托者声明一个属性——用于代表被委托者,一般建议用id类型。注意:这个属性是弱引用——为什么是弱引用,会在后面说明。
@property (weak,nonatomic)id<SecDelegate>delegate;
3.被委托者声明实现了委托里的协议
@interface HXYSec : NSObject<SecDelegate>
4.设置委托——在被委托者里设置自身是委托者的被委托者。
boss.delegate=sec;
//将被委托者自己的实例作为被委托对象
5委托事件——在被委托者里调用委托的方法
[boss.delegate phone];
[boss.delegate payoff];
//或者是
[sec phone];
[sec payoff];
示例代码:
SecDelegate.h
#import <Foundation/Foundation.h>
@protocol SecDelegate <NSObject>
-(void)phone;//打电话
-(void)payoff;//发工资
@end
HXYBoss.h
#impor