协议就是声明方法的集合,与具体实现无关,java中的interface也是吸收了协议这个概念.
###协议声明
1 | @protocol 协议名 |
###协议使用
1 | @interface 类名 : 父类 <协议名> |
###协议继承
1 | @protocol 协议名 <协议名> |
###指定协议的类型声明
id <S> obj;
- (void)addElement:(id<s>) elem;
###协议的前置声明
//声明S这个名字是一个协议
@protocol S;
###协议适用性检查
1 |
|
###协议的必须按功能和可选功能
@optional
可选的
@required
必选的,默认状态
1 | @protocol Book |
###以上部分协议也被称为正式协议 下面是非正式协议
将一组方法声明为NSObject
的范畴 这称为非正式协议
- 非正式协议中的方法不一定要实现
- 编译时不能检查类对非正式协议的适用性
- 运行时不能检查类对非正式协议的适用性,只能确认是否实现了方法