1,@interface AddressBook: NSObject <NSCopy>如果你的类实现了多项协议,协议之间用逗号分开.
协议不引用任何类型,它是无类的.任何类都可以遵守Drawing协议.
2,可以使用ConformsToProtocal:方法检查一个对象是否遵守某项协议.
例如有一个名为currentObject的对象,并且想要查看它时候是遵循Drawing协议.可以向他放松绘图消息
id currentObjec;
if([currentObjec : ConformsToProtocal: @protoco (Drawing) : == YES]){
....//DO SOMETHING;
}
这里使用一个专用的@protocol指令用于获取一个协议名称.并产生一个Protocol对象.
3,通常在类型名称之后的<>中添加协议名称,可以借助编译器来检查变量的一致性.id <Drawing> currentObject;
这告诉编译器currentObject将包含遵守Drawing协议的对象.如果这个对象遵循多个协议,可以用逗号隔开.
4, 定义一项协议的时候,可以扩展现有的协议.
@protocol Drawwing3D <Drawing>说明Drawwing3D协议也使用了Drawing协议.
最后分类也可以采用一项协议
@interface Fraction (Stuff) <NSCopy,NSCoding>
此处Fraction类拥有一个Stuff分类,这个分类采用了NSCopy,NSCoding两个协议.
协议不引用任何类型,它是无类的.任何类都可以遵守Drawing协议.
2,可以使用ConformsToProtocal:方法检查一个对象是否遵守某项协议.
例如有一个名为currentObject的对象,并且想要查看它时候是遵循Drawing协议.可以向他放松绘图消息
id currentObjec;
if([currentObjec : ConformsToProtocal: @protoco (Drawing) : == YES]){
....//DO SOMETHING;
}
这里使用一个专用的@protocol指令用于获取一个协议名称.并产生一个Protocol对象.
3,通常在类型名称之后的<>中添加协议名称,可以借助编译器来检查变量的一致性.id <Drawing> currentObject;
这告诉编译器currentObject将包含遵守Drawing协议的对象.如果这个对象遵循多个协议,可以用逗号隔开.
4, 定义一项协议的时候,可以扩展现有的协议.
@protocol Drawwing3D <Drawing>说明Drawwing3D协议也使用了Drawing协议.
最后分类也可以采用一项协议
@interface Fraction (Stuff) <NSCopy,NSCoding>
此处Fraction类拥有一个Stuff分类,这个分类采用了NSCopy,NSCoding两个协议.
和类名称一样,协议名称也是唯一的.