查看“initialize”的定义:
+ (void)initialize
讨论
运行时向程序中的每个类发送初始化,恰好在该类之前,或者从该类继承的任何类,从程序中发送其第一条消息。 (因此,如果未使用该类,则永远不会调用该方法。)运行时以线程安全的方式将初始化消息发送到类。超类在其子类之前接收此消息。
声明初始化是以“线程安全的方式”发送的。在幕后,运行时是否创建了一个锁来使该调用线程安全,或者它是否仅仅是从运行时的工作方式来看它本身就是线程安全的?如果它确实锁定了,这是否意味着如果你实现+初始化运行时会创建一个它本来不会创建的锁?
答案 0 :(得分:2)
我无法回答它是否锁定,但无论你是否实现+initialize
,它仍然被调用。默认实现可能会执行某些操作,但仍会调用它。因此,如果运行时确实锁定,则无论方法是否由子类实现,都会创建锁。