协议Protocol
协议:类型的合同约定,只描述外部接口,不提供具体实现
协议包含成员:
属性
实例方法
类方法
初始化器,不常用
析构器,不常用
协议中无法包含实例变量成员
协议中定义的属性本质上是访问器方法,编译器不会合成实例变量
一个类遵守协议,需要实现协议约定的所有@required成员
协议中的属性须在实现类的.h文件中声明(编译器合成实例变量需要)
遵守协议后却没有实现必选协议方法时,会出现警告提示
协议类型变量被赋值非协议类型对象时,会出现警告提示
协议本质上是一种类型,可以作为声明类型,但不能创建实例
使用conformToProtocol检查对象是否实现了协议
一个协议可以继承一个或多个协议
实现子协议的类型,也必须实现父协议中约定的成员
可以使用protocol<A,B...>来组合多个协议
实现组合协议的类型,必须实现组合协议中的每一个协议
可选协议:协议的某些成员可以定义为optional,不必实现