protocol
OC中的protocol是一个待实现的方法列表,与非正式协议不同,正式协议要求显式的采用协议。
声明协议
@protocol NSCopying. //这是Cocoa声明的一个协议
- (id) copyWithZone: (NSZone *)zone;
@end
使用协议
//采用一个协议
@interface Car : NSObject <NSCopying> {
//instance variables
}
// methods
@end //Car
//采用两个协议
@interface Car : NSObject <NSCopying, NSCoding> {
// instance variables
}
// methods
@end //Car
可以按任意顺序列出这些协议,没有任何影响。
下面写出Car类的copyWithZone方法的实现
- (id) copyWithZone: (NSZone *) zone {
Engine *engineCopy;
engineCopy = [[[self class] allocWithZone: zone] init];
return engineCopy;
}// copyWithZone
// [self class] 正在接受copy消息的对象所属的类