iOS理论知识点评

代理设计模式:

  1. 主要作用:通过引入代理对象的方式来间接访问目标对象。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用;防止直接访问目标对象带来的不必要复杂性;
  2. 代理包括三部分:代理,委托,协议
  3. 优点:
    • 职责清晰:被代理对象只负责自己实际的业务逻辑,不关心其他非本身的职责。并将其他事务可以通过代理类处理。
    • 高扩展性:无论被代理对象如何改变,只要代理类和被代理类都实现了统一接口,都不用修改代理类,而且即使扩展了新的被代理类,代理类也可以使用。
    • 降低耦合度:能够协调调用者和被调用者,在一定程度上降低了系统的耦合度
    • 保护代理:可以控制对一个对象的某些访问权限,及隐藏委托类的实现
  4. 缺点:
    • 只能一对一

Block回调

  1. block是一种轻量级的回调,可以直接访问上下文;
  2. 优点:
    • block的代码可读性更好,因为block只要实现就可以了
    • 由于block的代码是内联的,运行效率更高
    • 可以把block当做一个成员变量、属性、参数使用,使用起来非常灵活
  3. 缺点:
    • blcok的运行成本高。block出栈需要将使用的数据从栈内存拷贝到堆内存
    • block容易造成循环引用,而且不易察觉。因为为了blcok不被系统回收,所以我们都用copy关键字修饰,实行强引用。block对捕获的变量也都是强引用,所以就会造成循环引用

代理与Block的选择:

  • 如果回调的状态过多、多个消息传递,使用代理
  • 如回调的次数很频繁,使用代理
  • delegate运行成本低,block成本很高的;delegate只是保存了一个对象指针,没有额外消耗,只多做了一个查表动作(相对C的函数指针)

观察者模式

涉及多个对象都对一个特殊对象中的数据变化感兴趣,而且这多个对象都希望跟踪那个特殊对象中的数据变化,在这样的情况下就可以使用观察者模式

  1. 优点:
    • 观察者和被观察之间是抽象耦合,容易扩展,
  2. 缺点:
    • 运行效率较低,一个被观察者,多个观察者时,开发代码和调试会比较复杂
    • 通知虽然耦合低但不能被滥用,通知还考虑多线程调用(如果对观察者的通知是通过另外的线程进行异步投递的话,必须保证投递是以自恰的方式进行的)

单例模式

为了确保程序运行期某个类,只有一份实例,用于进行资源共享控制。可用于跨模块传值

  1. 优点:
    • 提供了对唯一实例的受控访问
    • 由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能
  2. 缺点:
    • 单例类的职责过重,在一定程度上违背了“单一职责原则”
    • 由于单利模式中没有抽象层,因此单例类的扩展有很大的困难
    • 不可过多的创建单例,因为单例从创建后到彻底关闭程序前都会一直存在,如果过多的创建单例无疑浪费系统资源和影响系统效率

6. @autoreleasePool 的数据结构

简单说是双向链表,每张链表头尾相接,有 parent、child指针
每创建一个池子,会在首部创建一个 哨兵 对象,作为标记
最外层池子的顶端会有一个next指针。当链表容量满了,就会在链表的顶端,并指向下一张表。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,909评论 1 32
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 10,708评论 1 23
  • 1.设计模式是什么? 你知道哪些设计模式,并简要叙述?设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型...
    龍飝阅读 6,653评论 0 12
  • 每次小王过来坐,我就很高兴。他给我扯东扯西,聊些特朗普和普京大叔的绯闻,又给我谈一本什么成功学书籍的读后感。“哎呀...
    无所用其心阅读 1,486评论 0 4
  • 今天早上6点钟起床,这几天都闹钟定时6点钟起床的,每天早晨起来还是有点头脑迷糊,在昨天的大组会和接海星的一天里又是...
    周秀峰阅读 1,189评论 0 0

友情链接更多精彩内容