Bloodline's Blog Notes and thoughts from Bloodline

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(字典)是...

关于copy

        前言 这也是一个丢人的问题。真的清楚某些属性为什么要用copy么? 讨论 下面的代码输出什么? NSString *str = @"ABC"; Person *p = [[Person alloc] init]; p.stringStrong = str; p.stringC...

再说iOS的内存管理

        前言 关于runtime和runloop总觉得已经了解的足够了,但是跟别人聊的时候还是会遇到不确定的情况。太丢人了。 讨论 看这样一段代码,分别打印的是什么(ARC)? __weak id weakObj;//使用weak,防止对引用计数器和内存释放产生影响 __weak id wea...

JSPatch

        前言 JSPatch用的越来越广泛。先记录下集成及使用的方式。由于公司没有提供专门的接口获取js脚本,而且也没有安全的访问方式,所以还是先试用JSPatch平台来实现吧。官方的文档写的很清楚,只记录遇到的坑。 集成 坑一: 我下载的时候提示是这个样子。 我还纳闷怎么没有压缩,于是...