Block的本质 block本质上也是一个OC对象,它内部也有个isa指针 block是封装了函数调用以及函数调用环境的OC对象 block的底层结构如右图所示image.p...
Block的本质 block本质上也是一个OC对象,它内部也有个isa指针 block是封装了函数调用以及函数调用环境的OC对象 block的底层结构如右图所示image.p...
OC中做方法交换时,没有直接使用method_exchangeImplementations,而是与class_addMethod一起使用。 那为什么这么用,会有什么好处。先...
基本概括 OC中的方法调用其实都是转成了objc_msgSend函数的调用,给receiver(方法调用者)发送了一条消息(selector方法名) 三大阶段 消息发送(当前...
注:以下都是基于64位系统来阐述的 NSObject对象占用的内存 结果: 由于NSObject底层实现只存储了isa指针,在64位系统中,指针占8个字节,应此至少需要8字节...
七大准则 单一职责:一个类只做一件事情 开闭原则:对修改关闭,对扩展开放 依赖倒置:依赖抽象而不依赖实现 里氏替换:使用基类的地方可以无缝用子类替换 迪米特:高内聚,低耦合 ...
定义 场景 将一个需要解释执行的语言中的句子表示为一个抽象语法树 一些重复出现的问题可以用一种简单的语言来进行表达 一个简单语法需要解释的场景 实现 以100+10-20为例...
定义 场景 一个对象的改变将导致其他一个或多个对象也发生改变 一个对象必须通知其他对象,而并不知道这些对象是谁 实现 1、UML图 2、使用 创建主题,被观察类 构建观察者 ...
定义 场景 系统中对象之间存在比较复杂的引用关系 想通过一个中间类来封装多个类的行为,而又不想生成太多的子类 实现 以AColleague与BColleague简单发消息为例...
定义 场景 某个类里面包含各种类型的元素,这个类的结构较稳定,不会经常增删不同类型的元素,而需要经常给这些元素添加新的操作,考虑使用该设计模式。 实现 假如一个小的创业公司,...
定义 场景 发现两个或两个几乎一模一样的类,只是有些方法的实现方式不一样的时候,就要想想了,而又发现调用该类中的方法顺序又是一样的,那很适合使用该模式。 实现 以分享简单举例...
定义 场景 代码中有很长的if else分支,分支都是不同状态下执行的操作不一样。 实现 1、UML图 2、使用 构建状态协议,统一状态对象操作 2、构建具体状态类,执行具体...
定义 场景 功能需要存档并恢复的场景 实现 1、UML图 2、使用 构建需要保存状态的类 构建备忘录类 保存及恢复备忘录类 Client调用 总结 识别出Originator...
定义 场景 需要实现自己的容器类,且要迭代里面的元素 实现 IOS中有现成的迭代的接口NSEnumerator,直接使用而不需要重新创建。1、UML图 2、使用 创建原始对象...
定义 场景 要将各种执行的动作抽象出来,使用时通过不同的参数来决定执行哪个对象 某个或某些操作要支持撤销的场景 某个操作要支持事务操作的时候 要对操作过程记录日志,以便后期通...
定义 场景 一个操作可能需要多个对象处理,自己并不关心哪个对象处理,最终由谁处理是在运行时决定的 实现 以报销审批为例,小王出差回来需要报销,小王并不知道最终谁审批,但他知道...
定义 场景 需要动态的给对象增加功能 给对象增加功能,但又不想通过继承的方式 实现 以泡咖啡为例,用户需要先加糖再加牛奶,或者先加牛奶再加糖,这种方式就非常适合使用装饰器模式...
定义 场景 远程代理:为两个不同地址空间对象的访问提供了一种实现机制,可以将一些消耗资源较多的对象和操作移至性能更好的计算机上,提高系统的整体效率 虚拟代理:通过一个消耗资源...
定义 场景 程序中存在大量相似对象,每个对象之间只是根据不同的使用场景有些变化。 实现 1、UML类图 Flyweight享元接口,定义所有对象共享的操作 ConcreteF...
定义 场景 程序有很多模块,或者说子系统。希望给用户提供一个统一的操作界面,隔离子系统的复杂性,不让用户分别去与子系统交互。 实现 如Client要从订单系统及支付系统打印一...