day8---协议与代理
第八天 协议与代理 【**iOS中重点的一种设计模式】
什么是设计模式
是一套被反复使用,多数人知晓的,代码设计经验的总结,使用设计模式的目的是为了可重用代 码,让代码更容易让人理解,保证代码的可靠性,灵活性,让代码更通用,更容易维护,升级!
一 协议
1.1生活中的协议
就业协议,离婚协议,婚前协议,租房协议,劳动合同,医生无责任协议。。。
1.2什么事协议
协议就是双方要相互遵守的约定,规范,行为;
1.3OC中的协议
OC中的协议,就是一组方法列表,不由协议本身实现,由遵守协议的对象来实现协议中规 定的方法;
1.4协议的使用的步骤
1)制定协议
2)遵守协议
3)由遵守协议的对象去实现协议里规定的方法
//实现协议中规定的方法
#pragma mark -以下的方法都是CodingProtocol中规定的协议方法固定格式,便于查看实现的协议方法4)调用协议方法1.5OC中有多继承吗?
没有多继承,只有单继承;但我们可以使用协议来实现类似于C++中多继承的效果;
总结协议的作用:
1.规范接口,统一接口,让遵守这个协议的所有对象都必须实现一些方法,可以达到统一 接口的效 果;
2.实现类似于C++的多继承的效果
3.开发中最常用【代理设计模式】
1.6 协议和继承都能达到统一接口的母的 (通过方法名相同来实现)
继承:子类继承父类,子类就拥有父类的方法,除非父类的方法不满足子类的需求,需要重写父类的方法,重写的方法名和父类的方法名一致,这样就达到了统一接口的效果;协议:协议是用来规范接口,统一接口,一旦一个类遵守了协议,那么就必须实现协议中的方法,如果多个类同时遵守一个协议,那么这些类中的协议方法名一致,这样达到了统
一接口的效果!1.7协议的特点
1)所有的协议都必须直接或者间接的遵守基协议;
2)一个协议可以被多个对象同时遵守;
3)一个对象可以同时遵守多个协议;
4)如果父类遵守了某个协议,那么子类也会把这个协议继承下去;1.8指针的限定
id<协议名> obj = [[xxxalloc]init];
obj这个指针所指向的对象,必须是遵守了这个协议的对象,且该指针只能调用该协议中的协议方法;
二 代理设计模式 【**重点】
是iOS中一种非常重要的设计模式,是通过协议去实现的;
A如果想去做某一件事,但他自己不会做或者不想做,那么A就会委托B帮他去做;
A委托B:A叫做委托者
B叫做A的代理人A委托B
A是委托者:1)制定协议
2)声明代理指针,指针指向的对象必须是遵守了该协议的对象
id<协议名>delegate;
3)A让代理人B去帮忙做事[self.delegate协议方法];
B是代理人:1)遵守A制定的协议
2)实现协议里规定的方法(代理人B具备了帮A做事的能力)
【day8---协议与代理】三 头文件循环包含
A文件导入了B的头文件,同时B的头文件又导入了A的头文件,这样,在展开头文件的时候,就会 无限循环展开,这个过程称为“循环包含”;
见【Demo】-【3-循环包含的问题】
解决方案:
#import只能解决头文件重复包含的问题,但解决不了头文件循环包含;
@class解决头文件循环包含的问题;
@class 类名;表示的是一个类的前置声明,仅仅告诉当前工程中有这个类而已,但是并没有导入该类的头文件,所以如果使用@class类名,在.m文件如果需要使用该类的方法或属性,需要在.m文件里导入该类的头文件,只有真正的导入了头文件,才能使用该类的相关接口;【在一定意义上合理的正确的使用@class,可以提高编译性能,缩短编译时间】;
推荐阅读
- 20170413/52|20170413/52 持续加强元认知
- 《好好学习》成甲/著|《好好学习》成甲/著 第一章 知识管理与认知优势
- javascript中的数据结构与算法(二)--列表
- tableView性能优化与手动绘制cell内容
- 实验一|实验一 Linux系统与应用准备
- 与宇宙意志相协调
- 汽车出行|潮酷座舱与复古越野的碰撞,哈弗酷狗售12.38万元起 | 一线车讯
- 给予你生命一场无与伦比的燃烧
- 黑科技|助力想象与创造再无边界,华为平板的“三位一体”只是起点
- 数学建模算法与应用|主成分分析;主成分回归分析——Hald水泥问题;主成分分析案例——各地区普通高等教育发展水平综合评价;matlab