Notes and thoughts from Bloodline

iOS中的设计模式——单例(Singleton)

        单例模式 单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式应该是设计模式中最简答的形式了。这一模式的意图是让类的一个对象成为系统中唯一的实例。 类图 使用场景 类只能有一个实例,而且必须从一个为人熟知的访问点对其进行...

iOS中的设计模式——生成器(Builder)

        生成器模式 生成器模式(Builder):将一个复杂对象的构建与它的表现分离,使得同样的构建过程可以创建不同的表现。 有时,构建某些对象有多种不同方式。如果这些逻辑包含在构建这些对象的类的单一方法中,代码将会充满条件判断。如果能把构建过程分解为客户-指导者-生成器(client-direc...

UIScrollView参考

        只记录了滑动相关的内容。 UIScrollView关键属性 tracking:用户已经触摸,但是还没有拖拽时返回YES。 dragging:用户开始滑动一小段时间或一小段距离时,返回YES。 decelerating:用户松手,但是还...

屏蔽冗余日志信息(NSLog)

        前言 打印了scrollView的代理方法,查看调用顺序,却发现满屏的无关日志。实在忍不了。 关于NSLog NSLog是这么个东西: FOUNDATION_EXPORT void NSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2)...

iOS中的设计模式——工厂模式(Factory)

         工厂模式分为简单工厂模式和抽象工厂模式。 工厂方法是抽象工厂模式的组成部分。 开始之前,我们先看下简单工厂模式,作为warming up。 简单工厂模式 通过工厂类根据参数负责创建具体的产品,即工厂类在工厂方法中通过对参数进行条件判断(if、switch)来创建不同的实...

iOS中的设计模式——原型(Prototype)

        前言 以前作为iOS小团队的负责人,在团队间沟通上要整天面对数不清的扯皮,然后团队内又要作为主程写代码。可谓操着卖白粉的心,赚着卖白菜的钱。最近换了新的工作环境(虽然不是顶尖的团队),终于可以静下心来研究些细节——其实,团队对于工作质量(代码或者架构设计)的高要求也需要我们从更高更深的角度对...

多线程下的线程安全问题

        引入问题 在多个线程同时访问同一个对象的数据时,会有线程安全的问题。比如: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [self changePersons]; }...

GCD相关参考

        GCD GCD的一个重要概念是队列,它的核心理念:将长期运行的任务拆分成多个工作单元,并将这些单元添加到dispath queue中,系统会为我们管理这些dispath queue,为我们在多个线程上执行工作单元,我们不需要直接启动和管理后台线程。 任务 任务即操作,在GCD中就是一个b...

使用僵尸对象辅助调试

        前言 以前听过僵尸对象,原来只是觉得大概是内存没有被引用,但是依然没有被覆写的状态。 NSZombie Object Cocoa提供了“僵尸对象(NSZombie Object)”功能。启用这个功能之后,运行期系统会把所有已经回收的实例转化成为特殊的“僵尸对象”,而不会真正回收它们(大概...

Find Memory Leaks

        前言 这次项目升级,用到了instruments进行Memory Leaks的排查。因为效果很明显,特地整理下来。 instruments 为了能够充分发挥instruments的功能,特地把Apple的相关文档看了一遍,确认了Memory Leaks排查的方法。 To investi...