美文网首页
iOS理论知识点评

iOS理论知识点评

作者: nenhall | 来源:发表于2019-11-19 13:38 被阅读0次

代理设计模式:

  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指针。当链表容量满了,就会在链表的顶端,并指向下一张表。

相关文章

  • iOS理论知识点评

    代理设计模式: 主要作用:通过引入代理对象的方式来间接访问目标对象。在某些情况下,一个对象不适合或者不能直接引用另...

  • 0. Socket学习资料汇总

    Socket理论知识 iOS Socket理论知识 关于iOS socket都在这里了 iOS Socket T...

  • iOS开发之BLE(二)——外设连接与断开

    在 iOS开发之BLE(一)——理论知识 一文中,主要对iOS开发中BLE的基本理论知识进行了介绍,本文以中心模式...

  • iOS开发之BLE(二)——外设连接与断开

    在iOS开发之BLE(一)——理论知识一文中,主要对iOS开发中BLE的基本理论知识进行了介绍,本文以中心模式为例...

  • ios学习非常有用的8个练手小项目

    在iOS学习中,前期我们肯定是学习理论知识,当理论知识学到一定的阶段后,就要开始进行实战开发,将之前学到理论知识运...

  • iOS App 稳定性指标及监测(转载)

    iOS App 稳定性指标及监测 作者介绍:李运锋,美团点评iOS工程师,5年iOS开发经验,现在是美团点评点餐团...

  • iOS Socket理论知识

    序言 网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。其中物理层、数据链路层和网...

  • ios理论知识普及

    1.为什么说Objective-C是一门动态的语言?objective-c是通过给对象发送消息,对象在接收到消息之...

  • iOS Socket理论知识

    序言 网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 其中物理层、数据链路层和...

  • iOS socket理论知识

    网络七层由上往下分别为 物理层,数据链路层,网络层,传输层,会话层,表示层和应用层,其中物理层,数据链路层和网络层...

网友评论

      本文标题:iOS理论知识点评

      本文链接:https://www.haomeiwen.com/subject/blywictx.html