240 发简信
IP属地:浙江
  • 120
    重新认识Block

    Block的本质 block本质上也是一个OC对象,它内部也有个isa指针 block是封装了函数调用以及函数调用环境的OC对象 block的底层结构如右图所示image.p...

  • Method swizzling为甚么要用class_addMethod?

    OC中做方法交换时,没有直接使用method_exchangeImplementations,而是与class_addMethod一起使用。 那为什么这么用,会有什么好处。先...

  • 120
    OC方法调用流程

    基本概括 OC中的方法调用其实都是转成了objc_msgSend函数的调用,给receiver(方法调用者)发送了一条消息(selector方法名) 三大阶段 消息发送(当前...

  • OC 对象内存计算

    注:以下都是基于64位系统来阐述的 NSObject对象占用的内存 结果: 由于NSObject底层实现只存储了isa指针,在64位系统中,指针占8个字节,应此至少需要8字节...

  • 120
    设计模式概况

    七大准则 单一职责:一个类只做一件事情 开闭原则:对修改关闭,对扩展开放 依赖倒置:依赖抽象而不依赖实现 里氏替换:使用基类的地方可以无缝用子类替换 迪米特:高内聚,低耦合 ...

  • 120
    解释器模式

    定义 场景 将一个需要解释执行的语言中的句子表示为一个抽象语法树 一些重复出现的问题可以用一种简单的语言来进行表达 一个简单语法需要解释的场景 实现 以100+10-20为例...

  • 120
    观察者模式

    定义 场景 一个对象的改变将导致其他一个或多个对象也发生改变 一个对象必须通知其他对象,而并不知道这些对象是谁 实现 1、UML图 2、使用 创建主题,被观察类 构建观察者 ...

  • 120
    中介者模式

    定义 场景 系统中对象之间存在比较复杂的引用关系 想通过一个中间类来封装多个类的行为,而又不想生成太多的子类 实现 以AColleague与BColleague简单发消息为例...

  • 120
    访问者模式

    定义 场景 某个类里面包含各种类型的元素,这个类的结构较稳定,不会经常增删不同类型的元素,而需要经常给这些元素添加新的操作,考虑使用该设计模式。 实现 假如一个小的创业公司,...

  • 120
    模板模式

    定义 场景 发现两个或两个几乎一模一样的类,只是有些方法的实现方式不一样的时候,就要想想了,而又发现调用该类中的方法顺序又是一样的,那很适合使用该模式。 实现 以分享简单举例...

  • 120
    状态模式

    定义 场景 代码中有很长的if else分支,分支都是不同状态下执行的操作不一样。 实现 1、UML图 2、使用 构建状态协议,统一状态对象操作 2、构建具体状态类,执行具体...

  • 120
    备忘录模式

    定义 场景 功能需要存档并恢复的场景 实现 1、UML图 2、使用 构建需要保存状态的类 构建备忘录类 保存及恢复备忘录类 Client调用 总结 识别出Originator...

  • 120
    迭代器模式

    定义 场景 需要实现自己的容器类,且要迭代里面的元素 实现 IOS中有现成的迭代的接口NSEnumerator,直接使用而不需要重新创建。1、UML图 2、使用 创建原始对象...

  • 120
    命令模式

    定义 场景 要将各种执行的动作抽象出来,使用时通过不同的参数来决定执行哪个对象 某个或某些操作要支持撤销的场景 某个操作要支持事务操作的时候 要对操作过程记录日志,以便后期通...

  • 120
    责任链模式

    定义 场景 一个操作可能需要多个对象处理,自己并不关心哪个对象处理,最终由谁处理是在运行时决定的 实现 以报销审批为例,小王出差回来需要报销,小王并不知道最终谁审批,但他知道...

  • 120
    装饰器模式

    定义 场景 需要动态的给对象增加功能 给对象增加功能,但又不想通过继承的方式 实现 以泡咖啡为例,用户需要先加糖再加牛奶,或者先加牛奶再加糖,这种方式就非常适合使用装饰器模式...

  • 120
    代理模式

    定义 场景 远程代理:为两个不同地址空间对象的访问提供了一种实现机制,可以将一些消耗资源较多的对象和操作移至性能更好的计算机上,提高系统的整体效率 虚拟代理:通过一个消耗资源...

  • 120
    享元模式

    定义 场景 程序中存在大量相似对象,每个对象之间只是根据不同的使用场景有些变化。 实现 1、UML类图 Flyweight享元接口,定义所有对象共享的操作 ConcreteF...

  • 120
    外观模式

    定义 场景 程序有很多模块,或者说子系统。希望给用户提供一个统一的操作界面,隔离子系统的复杂性,不让用户分别去与子系统交互。 实现 如Client要从订单系统及支付系统打印一...