剖析@synchronizd底层实现原理

@synchronizd是Objective-C中的一个语法糖,用于给某个对象加锁,因为使用起来简单方便,所以使用频率很高。然而,滥用@synchronizd很容易导致代码效率低下。本篇博客旨在结合@synchronizd底层实现源码并剖析其实现原理,这样可以更好的让我们在适合的情景使用@synchronizd。

Read more

两个特殊函数+load和+initialize

记得还在上一家公司任职的时候,在研发部的探讨会会上就“+load的加载过程”这一议题有过激烈的讨论,大家各执一词,争得面红耳赤。最终是部门老大专门做了一期讲解,才平息了这场争执。但是那时候的讲解并未涉及到源代码分析,而是基于测试代码做的分析,故我并没有完全理解。

在苹果开发文档中提及到:+load是在类或者分类被添加到runtime的时候被调用,而+initialize则是在类的用实例方法或者类方法第一次被调用之前调用。

上面的说明只是说明了这两个函数调用时机,但是并没有涉及父类、子类和分类之间的调用顺序和相互影响,于是试着结合apple公司的开源代码objc4-532.2试着分析这两个函数的加载过程,以加深理解。

Read more