协议 指的是 一系列措施,这些措施 可以适用于 不同类型的物件。一项协议中的措施 并没有 相应的具体内容。如果 你 希望 一项协议中的措施 适用于 某类物件,那么 我们 就可以说 这类物件 遵循 这项协议。如果 你 让 一类物件 遵循 一项协议,那么 你 就要为 这项协议中的措施 编写 相应的具体内容。
要拟 一份协议 非常 容易,只需要用到 @protocol命令。而 在@protocol命令后面 需要写清楚 协议的名称。最后 还要列举出 这份协议所包含的措施。如果 你 使用 基础框架,你 就会找到 不少协议。比如 如果 你的物件 支持 拷贝,那么 这类物件 就必须遵循 NSCopying这份协议。NSCopying这份协议 位于 NSObject.h这个文件,协议的内容 是 这样的:
如果 你的某类物件 遵循 NSCopying这项协议,那么 你 就必须编写 copyWithZone:这项措施的相应内容。而 下面这行语句
就是告诉 编译器 AddressBook这类物件 遵循 NSCopying这份协议。于是 编译器 希望 在AddressBook这类物件的实施部分 找到 copyWithZone:这项措施的具体内容。
如果 一类物件 遵循 多项协议,那么 也很 简单,只要这样 就可以了:
两项协议名称之间 需要用 逗号 隔开。
如果 你自己 起草 一份协议的话,你 并不需要 编写 这份协议所包含的措施的具体内容。如果 其他开发者 打算遵循 这份协议,那么 这份协议所包含的措施的具体内容 则 由他们 来编写。
如果 某类物件 遵循 一项协议的话,那么 包含在这类物件中的其他类型的物件 都会遵循 这项协议。