1 协议,就是class里面必须遵循的约定。例如
@protocol viewControllerDelegate <NSObject> -(void)loadMoreData; @end @interface ViewController ()<viewControllerDelegate> @property (weak, nonatomic) IBOutlet UITableView *tableView; @property (nonatomic,strong) NSMutableArray *materialArray; @end @implementation ViewController //必须有loadMoreData -(void)loadMoreData{} @end
2 可选和必须
@optional
@required
3 调用代理的方法之前最好先做检查一下是否有该方法
if([self.delegate respondsToSelector:@selector(loadMoreData)]){ [self.delegate loadMoreData]; }
4 补充规则
// // tableViewFooterModel.h // tuanGou // // Created by xin on 15/4/14. // Copyright (c) 2015年 Jackey. All rights reserved. // #import <UIKit/UIKit.h> @class tableViewFooterModel;//注意点 //协议的命名:当前的view名称+Delegate //方法明媚:去掉当前view名称的前缀+含义 //返回值:当前view @protocol tableViewFooterModelDelegate <NSObject> @optional -(void)tableViewFooterModelloadMoreData:(tableViewFooterModel *)view; @end @interface tableViewFooterModel : UIView @property (nonatomic,weak) id<tableViewFooterModelDelegate> delegate; - (IBAction)getMoreData; @end