首页 > 代码库 > ios学习总结(四)

ios学习总结(四)

有关协议的注意事项:
A、如果一个类遵守某项协议,那么它的子类也遵守该协议。B、协议不引用任何类,它是无类的(classless) 。任何类都可以遵守某项协议。C、通过在类型名称之后的尖括号中添加协议名称,可以借助编译器的帮助来检查变量的一致性,如

下:

id <Drawing> currentObject;
这告知编译器 currentObject 将包含遵守 Drawing 协议的对象。 如果向currentObject 指派静态类型的对

象,这个对象不遵守 Drawing 协议,编译器将给出 warning。
再次提到 id 类型,如果向 currentObject 指派一个 id 变量,不会产生这条消息,因为编译器不知道存

储在 id 变量中的对象是否遵守 Drawing 协议。D、如果这个变量保存的对象遵守多项协议,则可以列出多项协议,如下:

id <Drawing, Drawing 1> currentObject;E、定义一项协议时,可以扩展现有协议的定义。以下协议

@protocol Drawing3D <Drawing>
说明 Drawing3D 协议也采用了 Drawing 协议。因此采用 Drawing3D 协议的类都必须实现此协议列出

的方法,以及 Drawing 协议的方法。F、分类也可以采用一项协议,如:

@interface Fraction (stuff) <NSCopying, NSCoding>
此处,Fraction 拥有一个分类 stuff,这个分类采用了 NSCopying 和 NSCoding 协议。 

ios学习总结(四)