Bloodline's Blog Notes and thoughts from Bloodline

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...

升级10.11后关于cocoapods xcode plugin

        瞎扯 把家里的MBPR升级了10.11,之前几款软件就不能用了,国内的软件版权保护工作的确做得不错,只好google关键字”XXX(软件名) crack”,重装这几款软件。 要命的是Xcode趁我不注意竟然自动升级到传说中坑爹的7.3,懒得退回。不过有几款插件貌似不好用,VVDocumen...

关于NSDictionary

        前言 聊得时候遇到这么个问题:实现上千对象的存储到字典(OC下就是NSDictionary)时,如果出现效率低下的问题,可能是什么原因?一脸懵逼啊,后来才知道重点在于NSDictionary的实现(hash算法及冲突的解决)。 hash算法及冲突的解决 NSDictionary(字典)是...