protocol基本用途:
可以用来声明一大堆方法(不能声明成员变量)
只要某个类遵守了这个协议,就相当于拥有了这个协议中的所有方法声明
只要父类遵守了某个协议,就相当于子类也遵守了
1.协议的定义:
@protocol 协议名称 <NSObject>方法声明列表
@end
2.如何遵守协议:
一个类遵守协议:
@interface 类名 : 父类名 <协议1, 协议2>
@end
协议遵守协议:
@protocol 协议名称 <其他协议名称1, 其他协议名称2>@end
3.协议中方法声明的关键字:
1>@required (默认)
要求实现,如果没实现,会发出警告
2>@optional
不要求实现,怎样都不会有警告
4.定义一个变量的时候限制这个变量保存的对象遵守某个协议:
类名<协议名称> *变量名;
id <协议名称> 变量名
NSObject <MyProtocol> *obj;
id <MyProtocol> obj;如果没有遵守相对应的协议,编译器会警告
5.@property 中 声明的属性中也可以做一个遵守协议的限制
@property (nonatomic, strong) 类名 (协议名称) *属性名;
@property (nonatomic, strong) id(协议名称) 属性名;
6.协议可以单独定义在.h文件中,也可以定义在某个类中
1>如果这个协议只用在某个类中,应该把协议定义在该类中
2>如果这个协议用在很多类中,就应该定义在单独文件中