首页 > 代码库 > 【OC学习-22】协议和代理双剑合璧——中介找房的代理模式
【OC学习-22】协议和代理双剑合璧——中介找房的代理模式
(1)什么是协议
协议其实是一种接口,创建出来给类(类1)调用,而其他类(类2)可以通过这个协议可以和类1进行通信。所以说它类似于一种接口,实现类和类之间的互动。
(2)创建协议
通过New File >>> Objective-C protocol创建。只生成一个.h文件。在这个.h文件里面写方法,分两种@required和@optional,一个是必须实现的方法,另一个是可选实现的方法,默认是required,这种分类方法类似于实例变量的分类。
#import <Foundation/Foundation.h> //<NSObject>可以省略,不像定义子类、类目和扩展等必须要有父类 @protocol hi <NSObject> @optional -(void)optional1; //默认是required,即如果不写optional则都是required @required -(void)required1; @end
(3)使用协议
在某一个类的.h文件里加<协议名>,就相当于已经引用了。然后在类的.m文件里实现协议的方法。
//在ASStudent.h类中 #import <Foundation/Foundation.h> #import "hi.h" //要引入这个文件 @interface ASStudent : NSObject //以下语句就表明调用了协议,如有多个,用逗号,隔开<hi1,hi2> <hi>; @end
//在ASStudent.m文件里 #import "ASStudent.h" @implementation ASStudent //如下语句就是实现协议 -(void)optional1{ } -(void)required1{ } @end
注意事项:
a:一般直接在类的.h文件中@protocol开头写协议,不要单独创建一个.h文件,然后引用和在.m文件里实现即可
(4)代理与协议
代理就是,让别人帮我做某件事情,可以理解为两个类之间的互动,这种互动正好用到协议。协议和代理天生好基友。
形象解说:协议就像是一个授权合同,比如类A让类B帮自己找租房。但是这个“授权合同”只是一张合同(即有方法),但合同是死的不能自己去找租房(即没有实现),但是类B得到这个授权合同(即引入协议),利用自己有一套如何找房子的方法(即实现这个协议里面定义的那些方法)就能达到一些目的如找到房子。
(5)代理与协议的主要用法
利用协议,类A调用另一个类B的方法,并且如果这个类B的方法有返回值的话,类A就可以得到这个返回值,并且利用if判断语句得到不同的结果。这就是一个类的反应影响另一个类的结果的应用思想。
总结:很重要,但最好结合实例学习,在此知道书写格式和整个逻辑关系即可。
【OC学习-22】协议和代理双剑合璧——中介找房的代理模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。