1

查看“初始化”的定义:

+ (void)initialize

讨论

运行时恰好在类或从它继承的任何类从程序中发送其第一条消息之前向程序中的每个类发送一次初始化。(因此,如果不使用该类,则可能永远不会调用该方法。)运行时以线程安全的方式将初始化消息发送到类。超类在其子类之前收到此消息。

据说初始化是以“线程安全的方式”发送的。在幕后,运行时是创建一个锁以使调用线程安全,还是仅仅从运行时的工作方式来看它本质上是线程安全的?如果它确实锁定了,这是否意味着如果您实现 +initialize 运行时会创建一个原本不会创建的锁定?

4

1 回答 1

2

我无法回答它是否锁定,但无论你是否实现+initialize,它仍然被调用。默认实现可能会做一些事情,但它仍然被调用。因此,如果运行时确实锁定,则无论该方法是否由您的子类实现,都会创建锁定。

于 2010-02-19T17:15:14.513 回答