已经学习了Objective-C类的基本元素和结构,但是该语言还提供了许多额外的特性用于开发类。本节说的就是protocols。
一个protocol声明了可以让其他任何类实现的方法和属性。
一个类接口是和一个特定的类相关联的,这就形成了一个类层次结构。
而,protocol并不与任何特定类关联,所以它可以被用来捕捉一些并没有层次关系的类里的相似点。
protocol为Objective-C提供了规范的多继承(也就是,方法声明)的能力。
protocol还可以用来定义一个对象可以发的消息。(通过指定遵循一个协议的属性)
1、语法
如果@required和@optional都没写,默认就是@required
Listing 2-12. Protocol Declaration Syntax
@protocol ProtocolName
// Property declarations
@required
// Method declarations
@optional
// Method declarations
@end
-----------------------------------------------------
protocol中还可以引入其他protocols。
Listing 2-13. Incorporating Other Protocols
@protocol ProtocolName <ProtocolName(s)>
// Method declarations
@end
---------------------------------------------------------------------
接口中引入protocols
Listing 2-14. Interface Adopting a Protocol
@interface ClassName : Parent <ProtocolName(s)>
// Method declarations
@end