协议 Protocol
.h文件:只提供外部接口,不提供具体实现
@protocol Drawable @end
包含属性、实例方法、类方法(、初始化器、析构器)
不包含实例变量(定义属性时只会自动生成getter和setter访问器,不会再自动生成实例变量)
使用协议
#import “.h”
@interfaceBLNPoint :NSObject<Drawable>
遵守协议需要实现所有@required的成员(.h文件里实行需要重复声明(生成实例变量),方法声明不用重写,.m文件里直接写实现方法)
注意警告信息
1. @required没有全实现会有警告信息
协议可以作为声明类型void func( id<Drawable> obj),但不能创建实例变量
2. 协议变量被赋值非协议类型变量也会有警告信息
检查协议
conformsToProtocol
协议继承
一个协议可以继承一个或多个协议,子协议中需要实现父协议中的方法
协议组合
< , >
一个类遵守多个协议
可选协议
@optional以下的全部是可选协议(直到@required)
不必须实现
常用协议
NSObject:区分基类和协议(NSObject和 <NSObject>)
NSCopying,NSMutableCopying:拷贝
NSFastEnumeration:使用for-in
NSCoding
网友评论