iOS入门小知识-协议

id类型

在介绍协议之前,我们先来了解OC中一个特殊的类型,那就是id类型,它是一个万能指针,可以指向任何OC对象,相当于NSObject *,类似于C里面的void *,自带寻址运算,所以id在指向一个对象时不需要再添加寻址运算符“*”。

协议

生活中处处都有协议,买车有买车协议,买房有买房协议,租房有租房协议,像我们这些打工仔基本都会签一个协议“卖身协议”,严谨一点的还会签一个保密协议,除了我们这类能说会跳的生物有协议外,其实机器也是有协议的,比如爬虫协议、机器人协议、http协议等,OC也不例外,OC中的协议就好比一个专门用来存放方法的容器,更像一组方法的列表,在协议中只会对方法进行声明(不能声明成员变量),不能对方法进行实现。在OC中,没有多继承,但可以通过协议间接实现类似于多继承的效果。

OC中的协议由协议名和方法构成:

协议的构造
创建协议

既然是协议,那就要有事物去遵守协议,OC中只要某个类遵守了这个协议,就相当于拥有了协议中的所有的方法的声明,那么也就由这个遵守协议的对象来实现协议制定的方法,而且只要父类遵守了某个协议,就相当于子类也遵守了这个协议。协议的一般使用步骤为:制定协议—>遵守协议—>实现协议里的方法—>调⽤协议里的方法

协议的使用

协议中的关键字:

@required:表⽰必须实现的协议方法

@optional:表⽰可以实现也可以不实现的协议方法

协议的关键字

协议的特点:

1.可以使用id<协议名> 的方式定义指针,这种指针可以用在方法的参数上,类的属性上。用在属性上,这个属性可以指向任何遵守了此协议的对象。如果用在参数上,任何对象只要遵守了此协议就可传⼊

2.协议中的方法可以是可选的,也可以是必须的,见图“协议的关键字”

3.一个类可以同时遵守多个协议

4.一个类继承了一个父类,如果父类遵守了某些协议,子类也相当于遵守了这些协议,见图“协议的使用”

5.在一个类的实现部分也可以指定遵守的相关协议,这里需要用到类扩展(匿名分类)

协议选择器

我们可以使用协议选择器判断一个类是否遵守了某个协议,从而来正确地调用协议方法,否则就会报错

你可能感兴趣的:(iOS入门小知识-协议)