在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 方法