其实有时间还是需要多补充下基础知识的,毕竟步子跨太大会扯到裆。
这是 Apple Doc 上对 - load 的描述。(强行秀一波翻译,其实我是个英语渣,最好还是看英文吧)当一个类或分类被添加到运行时的时候会触发这个方法;实现这个方法可以在加载这个类时执行一些特定的操作。
写下 demo 看看这个方法在继承树上是什么执行顺序,虽然文档里有写。
在收到第一条消息之前初始化类,也就是说你 #import 了这个类,但是没有用到这个类,就不会初始化它(有点懒加载的味道)。
runtime 会线程安全地发送 initialize 消息给类。父类会比它的子类先收到这个消息。结果中可以看出分类中的 initialize 会覆盖掉类中 initialize 方法,而父类的 initialize 方法仍旧会被执行。
接下来我们把子类中的 initialize 方法注释掉,重新跑一遍看看结果。
发现父类的 initialize 方法被调用了两遍,然后我们看文档中的这段话。
有时候我们可能需要这样的效果,但是大多数时间我们是不需要这样的,因此我们可以在实现 initialize 时,这样写来避免这个问题。
上表主要就是这两个方法的特点,因为是线程安全的,所以在这两个方法尽量少执行复杂的操作,防止阻塞线程。
以上就是我对这两个方法的描述,如有不对望指正,给个喜欢以示支持。
