NSObject的initialize()未在Release构建配置中调用

Ost*_*ach 6 xcode cocoa ios swift

根据Apple文档initialize()方法,在收到第一条消息之前初始化类.

有人可以解释为什么initialize()在Release构建配置中不起作用吗?

例如:

class Test: NSObject {
    override class func initialize() {
        print("initialize")
    }
    class func test() {
        print("test")
    }
}

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        Test.test()
    }
}
Run Code Online (Sandbox Code Playgroud)

调试配置中的输出:

initialize
test
Run Code Online (Sandbox Code Playgroud)

发布配置中的输出:

test
Run Code Online (Sandbox Code Playgroud)

Ada*_*dam 3

我做了一个快速测试,看起来除非您创建该类的实例,否则不会调用Release配置。+ initialize然而在Debug调用类方法就足以触发+initialize。看起来像是一个无证警告。

编辑:更有趣的事实是,对于 Objective-C 项目,在Debug配置中Release调用类方法就足以触发+ initialize. 我想说这是一个错误。您可能需要为其归档雷达。