id类型
在介绍协议之前,我们先来了解OC中一个特殊的类型,那就是id类型,它是一个万能指针,可以指向任何OC对象,相当于NSObject *,类似于C里面的void *,自带寻址运算,所以id在指向一个对象时不需要再添加寻址运算符“*”。
协议
生活中处处都有协议,买车有买车协议,买房有买房协议,租房有租房协议,像我们这些打工仔基本都会签一个协议“卖身协议”,严谨一点的还会签一个保密协议,除了我们这类能说会跳的生物有协议外,其实机器也是有协议的,比如爬虫协议、机器人协议、http协议等,OC也不例外,OC中的协议就好比一个专门用来存放方法的容器,更像一组方法的列表,在协议中只会对方法进行声明(不能声明成员变量),不能对方法进行实现。在OC中,没有多继承,但可以通过协议间接实现类似于多继承的效果。
OC中的协议由协议名和方法构成:
协议的构造 创建协议既然是协议,那就要有事物去遵守协议,OC中只要某个类遵守了这个协议,就相当于拥有了协议中的所有的方法的声明,那么也就由这个遵守协议的对象来实现协议制定的方法,而且只要父类遵守了某个协议,就相当于子类也遵守了这个协议。协议的一般使用步骤为:制定协议—>遵守协议—>实现协议里的方法—>调⽤协议里的方法
协议的使用协议中的关键字:
@required:表⽰必须实现的协议方法
@optional:表⽰可以实现也可以不实现的协议方法
协议的关键字协议的特点:
1.可以使用id<协议名> 的方式定义指针,这种指针可以用在方法的参数上,类的属性上。用在属性上,这个属性可以指向任何遵守了此协议的对象。如果用在参数上,任何对象只要遵守了此协议就可传⼊
2.协议中的方法可以是可选的,也可以是必须的,见图“协议的关键字”
3.一个类可以同时遵守多个协议
4.一个类继承了一个父类,如果父类遵守了某些协议,子类也相当于遵守了这些协议,见图“协议的使用”
5.在一个类的实现部分也可以指定遵守的相关协议,这里需要用到类扩展(匿名分类)
协议选择器
我们可以使用协议选择器判断一个类是否遵守了某个协议,从而来正确地调用协议方法,否则就会报错
网友评论