协议:类型的合同约定,只描述外部接口,不提供具体实现;
协议可以包含以下成员;
1,属性;
2,实例方法;
3,类方法;
4,初始化器(不常用)
5,析构器(不常用)
协议中无法包含实例变量成员;
协议中的定义的属性本质上是访问器方法,编译器不会合成实例变量
检查协议类型
使用conformsToProtocol检查对象是否实现了
还可以让子协议继承NSObject协议,利用performSelector方法判断方法是否实现;
/************
协议继承
1,一个协议可以继承一个或多个协议
2,实现自协议的类型,也必须实现父协议中约定的成员;
协议组合
1,可以使用protocol<A,B,......>来组合多个协议
2,实现组合协议的类型,必须实现组合协议中的每一个协议
可选协议
1,协议的某些成员可以定义为optional,不必实现;
常用的协议
NSObject
NSCopying
NSmutableCopying
NSFastEnumeration
NSCoding