协议是为了弥补Objective-c中类只能单继承的缺陷,在Objective-c2.0之前当一个类遵循一个协议的时候,必须在类中实现协议的所有方法,在Objective-c2.0之后协议中的方法就有关键字来区别那些方法是必须实现的,那些方法不是必须实现的,默认是不必须实现的@optional 修饰的方法是不必须实现的,@required修饰的方法必须实现,
一般用的比较多的代理委托有UITextFieldDelegate,UITableViewDataSource,UITableViewDelegate等,
而我根据自己的经验目前觉得使用自定义委托用的最多的时候就是网络请求数据的时候,把网络接口的方法放在委托当中,让接口类遵循这个委托,这样就实现了较好地封装性。
声明协议可以单独放在一个文件中也可以和其他类放在同一个文件中。
@protocol DisastersHttpDelegate <NSObject>
@optional
//根据灾情id获取需求列表。
-(void)didGetDemandsListByDisasterId:(NSArray*)disasterIdArray;
//获取需求类别
-(void)didGetDemandCategories:(NSArray*)demandCategoryArray;
@end