Day13 协议

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

  

你可能感兴趣的:(协议)