Effective Objective-C 2.0 学习笔记
这篇文章是在阅读《Effective Objective_C》一书时的学习笔记,这本书对Objective-C语言的特性进行有深入浅出的分析和讲解,让我受益匪浅。
这篇文章是在阅读《Effective Objective_C》一书时的学习笔记,这本书对Objective-C语言的特性进行有深入浅出的分析和讲解,让我受益匪浅。
@synchronizd是Objective-C中的一个语法糖,用于给某个对象加锁,因为使用起来简单方便,所以使用频率很高。然而,滥用@synchronizd很容易导致代码效率低下。本篇博客旨在结合@synchronizd底层实现源码并剖析其实现原理,这样可以更好的让我们在适合的情景使用@synchronizd。
Objective-C中的BOOL类型在iWatch和64位iOS上的原始类型为bool,而在其它情况下是signed char。
记得还在上一家公司任职的时候,在研发部的探讨会会上就“+load的加载过程”这一议题有过激烈的讨论,大家各执一词,争得面红耳赤。最终是部门老大专门做了一期讲解,才平息了这场争执。但是那时候的讲解并未涉及到源代码分析,而是基于测试代码做的分析,故我并没有完全理解。
在苹果开发文档中提及到:+load是在类或者分类被添加到runtime的时候被调用,而+initialize则是在类的用实例方法或者类方法第一次被调用之前调用。
上面的说明只是说明了这两个函数调用时机,但是并没有涉及父类、子类和分类之间的调用顺序和相互影响,于是试着结合apple公司的开源代码objc4-532.2试着分析这两个函数的加载过程,以加深理解。