在iOS开发中经常要在两个类之间进行通信,比如常见的时当一个View数据修改之后,需要在view的controller上做点坏事,这个时候就需要使用代理,一般代理都配合协议使用。
在定义协议时,可以通过@required与@optional来配置遵守这个协议必须去实现的方法和可以选择的方法。
例如:
A类的事件需要通知B类,B成为A的代理
A类中写一个协议
@protocol XXDelegate <NSObject> @optional -(void) function_name:()A类 @interface A类 @property (nonatomic,weak) id <XXDelegate> delegate @end
在事件中调用
if([self.delegate respondToSelector:@selector(function_name:)]){ [self.delegate function_name:self]; }
在B类中声明 <XXDelegate>
实现function_name 方法