Objective-C中的协议就是一个方法以及一些属性的列表,里面列出了一些类必要实现的方法以及可选的方法。使用协议需要注意以下几点:
(1) 父类实现了某个协议,则其子类遵循该协议。如果不满足自己的要求,可以重新实现,覆盖父类的方法
(2) 一个协议可以是另一个协议的扩充。也就是一个协议可以扩充其他的协议。
(3) 协议中的@required 以及 @optional
(4) 可以使用conformsToProtocol:方法来检测一个类是否实现了该协议 例如 [currentObject conformsToProtocol:@protocol(Drawing)] == YES;
(5) 可以使用编译过程来检测,如以下的程序所示
例如下面的程序:
//声明一个协议
@protocol drawing <NSObject>
-(void) showDrawing;
@end
使用该协议
@interface testClass :NSObject <drawing>
@end
@implementation testClass
-(void) showDrawing
{
NSLog(@"drawing");
}
@end
在主程序中使用该类
//编译的时候会检测testClass类是否实现了该协议
id<drawing> iTest = [[testClassalloc]init];
[iTestshowDrawing];
[iTestrelease];