协议的定义:
@protocol 协议名称
//方法声明列表
@end;
协议的使用:
@protocol 类名<协议名称1,协议名称2...>
@end;
在默认情况下,只要是协议里面声明过的方法,遵守此协议的类就必须要实现协议里的声明的所有方法,否则系统就会发出警告。一个类可以遵守多个协议,而在oc中类的继承只是单一继承。
oc提供两个关键字@required (后面的方法在遵守协议的类里面必须实现)和 @optional (可以实现也可以不实现)没有关键字时候,系统默认是@required
例子:
#import
@protocol personProtocol //定义一个协议
@required
- (void)eat;//必须实现的方法
@optional
- (void)run;//选择实现的方法
@end
@interface Person:NSObject
@end
@implementation Person
- (void)eat{
NSLog(@"人在吃饭");
}
@end
int main(int argc, const char *argv[] ){
@autoreleasepool{
Person * p = [Person new];
[p eat];//调用协议中必须要实现的方法
}
return 0;
}
程序运行结果为:人在吃饭
|
|