首先要明白协议的作用,协议的作用就是对一些方法的声明,如果一个类遵守了此协议
就有了此协议中的所有方法,当然用有了这写方法后要对这些方法进行实现
oc中有关协议的用法如下:
1.协议的定义
@protocal 协议名称 <NSObject>
//方法的声明
- (void)test;
- (int) test2;
@end
例子:@protocol myprotocol <NSObject>
@end
2.一个类怎么遵守协议
@interface 类名:父类名<协议1,协议2>
@end
例子: @interface p :Person <Myprotocol>
@end
3.协议遵守协议
@protocol 协议名称<协议1,协议2>
@end
例子: @protocol Myprotocol <Protocol1,Protocol2>
@end
4.协议中的方法声明的关键字
(1)@require(默认)
要求实现,如果没有实现将会发出警告
(2)@optional
不要求实现,不实现也不会警告
5.定义一个变量的时候,限制这个变量保存的对象遵守某个协议
类名<协议名称> *变量名;
id<协议名称>变量名称;
例子:NSObject<Myprotocol>*obj;
id<Myprotocol> obj2;
如果没有对应的协议,编辑器会发出警告
6.@property中声明的属性也可用做一个遵守协议的限制
@property (nonatomic,strong) 类名<协议名称> *属性名;
@property (nonatomic,strong) id<协议名称> 属性名;
列子:@property (nonatomic,strong) Dog<Myprotocol>*dog;
@property (nonatomic,strong) id<Myprotocol>dog1;
另外补充一点分类的写法
在.h文件中
@interface Dog1 (Dog)
- (void)test;
@end
在.m文件中
@implementation Dog1 (Dog)
- (void)test
{
.....
}
@end