由于OC不支持多继承,所以在很多时候都是要用Protocol协议来代替。Protocol协议只能定义公用的一套接口,不能提供具体的实现方法。也就是说只告诉需要做什么,但具体怎么实现需要另外实现操作。
当一个类要使用某一个Protocol协议时,都必须要遵守协议。如果有些必须要实现的方法,你没有实现,编译器就会报警告来提醒你没有遵守未实现的协议。这仅仅是警告而不是报错,也就是说你不实现那些必要实现的方法,程序依然能在编译器上正常运行,只不过是多了些警告而已。
一、Protocol协议的作用
1. 定义一套公有的接口,Public
2. 委托代理传值
委托代理是一个设计模式,就是委托别人去执行某件事情。举个例子:两个类间的传值,类A调用类B的方法,类B在执行过程中遇到问题通知类A,这种情况就需要用到代理。又比如:两个控制器间的传值,从A1跳转到A2,再从A2返回到A1时,需要通知A1刷新数据或者是进行其他操作,这时候就需要用到了代理传值。
3.定义公有的接口,Public
①新建一个协议文件,Objective-C File类型的文件;
②然后命名协议文件及选择文件类型,文件类型选择Protocol;
③在新建的协议文件的.h文件里面操作,声明必须实现的方法和非必须实现的方法;
④最后再需要使用该协议的地方,引入头文件,然后遵循协议,最后去实现协议即可。
二、委托代理传值
1.首先创建两个控制器A、B;
2.在B控制器.h里面,新建一个协议,声明代理传值方法,委托代理人;在B控制器.m里面,实现通知执行协议方法;
3.在A控制器.m里面,导入控制器B头文件,然后再需要的地方实现B控制器的协议方法即可。
三、其他
当你需要定义一个公用的接口,实现方法可以在不同的时候,就可以使用Protocol协议;
当你需要不同界面之间的通讯传值,也可以使用基于Protocol协议,使用代理设计模式来进行传值操作。
关注三掌柜的微信公众号,一起交流探讨开发经验,我在微信公众号等你来哦!