免费开源的iOS开发学习平台

OC基础:协议Protocol

协议是多个类共享的一个方法列表,在协议中列出的方法,在定义协议的类中并没有给出具体的实现,而协议的实现的功能是在遵守协议的类中定义的。通过协议可以实现对象之间的通信,同时又能够使类的定义更加通用,也就是说,遵守同一协议的类,针对协议中定义的方法,可以在类中实现不同的功能。例如,当一个视图View类的对象被点击时,在不同的控制器Controller类中可以定义不同的响应方法。

为什么需要协议

协议用来解决对象之间通信问题,特别是当视图类对象向控制器类对象通信(发送用户点击动作、请求设置视图数据)时,常使用协议。通过协议可以进一步提升该类的通用性,例如,对于某个按钮的点击动作,在所有遵守协议的对象中,可以定义不同的动作。

协议的种类

协议,简单的可以理解为日常生活中的“合同”。可以存在多种合同,如租房合同、销售合同,当甲乙双方签订某个合同时,意味着对双方的行为有了约束。另外,即便是同一类合同,针对不同的人,虽然合同模板相同,但具体的条款可能不同,例如,劳动合同是一个统一的模板,单位和劳动者都要遵守,但是其中的诸如:薪资、试用期、合同年限等等条款,可以因人而异。在iOS开发中,可以定义各种各样的协议,常见的有代理协议、数据源协议等。

协议的实现步骤

协议的实现相对复杂,但步骤都是统一的,当需要实现协议时,可以按照如下的步骤一步步添加相关的代码,总体来说包括三个核心步骤:

  1. 添加协议,并设置协议中包含的方法,同时添加一个属性用于设置遵守协议的对象;
  2. 设置触发执行协议中方法的时机,例如发生了用户点击;
  3. 在遵守协议的类中,实现协议中方法的具体功能。