objective-C学习笔记(十)协议

协议 Protocol

协议是类的合同约定,只描述外部接口,不提供具体实现。所以,协议其实可以写在类的.h文件中,不去实现就可以了。

协议可以包含以下成员:

属性 (编译器不会和普通interface那样会自动合成一个实例变量)

实例方法

类方法(不常用,因为协议主要是针对类的实例化使用的,类方法一般都直接在类里声明就好了)

初始化器和析构器(不常用)

不可以包含:实例变量

协议的使用

一个类遵守协议,需要在.h文件中声明所有@required的属性成员,在.m文件中实现所有@required方法。

如果没有全部实现的话,编译的时候会报警告信息。

协议类型的对象被赋值给非协议类型对象时,会出现警告提示。

所以,在创建方法的时候,如果把遵从某个协议的对象作为参数,必须要声明这个类满足某个协议:

void provess1(id<Drawable> obj){}

或者在使用的时候,用conformsToProtocol来检查是否实现了协议。

[obj conformsToProtocol:@protocol(AProtocol)]

协议的继承:上面的协议遵从判断,子协议也是可以通过的。

常用的协议:NSObject下的各种协议。

上一篇:PAT A1136 A Delayed Palindrome (20 分)——回文,大整数


下一篇:Vue 实例中的生命周期钩子