B.8.3 协议定义

一般格式:


@protocol protocolName<protocol,……>

methodDeclarations

@optional

methodDeclarations

@required

methodDeclarations

……

@end


利用关联的方法定义了名为protocolName的协议。如果列出其他协议,protocolName还会采用列出的协议。

这个定义名为正式协议定义。

如果类定义或继承了protocolName协议中定义的所有方法,以及其他任何列出协议的所有方法,说明类符合protocolName协议。如果类不符合声明的正式协议,编译器会检查其一致性并生成警告。可能在运行时测试对象与正式协议的一致性,也可能不测试。

@optional指令可以放在方法列表的前面,这些方法的实现是可选的。然后,可以使用@required指令再取得必需方法的列表,为了符合协议,必须实现这些方法。

通常,协议不与任何特定的类关联,除非提供一种方法以定义在各个类中共享的公共接口。

特殊类型修饰符

在协议中,可以使用表B-8中列出的类型修饰符来声明方法参数和返回类型。这些修饰符可用于分布式的对象应用程序。

B.8.3 协议定义 - 图1