这里的协议是正式协议,相对的还有非正式协议,这在类别一节中有介绍。正式协议是一个命名的方法列表。它要求显式地采用协议。采用协议意味着要实现协议的所有方法。否则,编译器会通过生成警告来提醒你。
1.声明协议
@protocol NSCopying
-(id) copyWithZone:(NSZone *)zone;
@end
2.采用协议
@interface Car : NSObject
{
// instance variables
}
@end
协议可以采用多个,并且可以按任意顺序列出这些协议,没有什么影响。
3.OC 2.0的新特性
OC2.0增加了两个新的协议修饰符:@optional和@required,因此你可以像下面这样编写代码:
@protocol BaseballPlayer
-(void)drawHugeSalary;
@optional
-(void)slideHome;
-(void)catchBall;
@required
-(void)swingBat;
@end
因此,一个采用BaseballPlayer协议的类有两个要求实现的方法:-drawHugeSalary和-swingBat,还有3个不可选择实现的方法:slideHome,catchBall和throwBall。
|
|