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

时间:2016-11-24 10:17:09

标签: ios swift xcode cocoa

根据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()
    }
}

调试配置中的输出:

initialize
test

发布配置中的输出:

test

1 个答案:

答案 0 :(得分:3)

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

编辑: 更有趣的事实是,对于DebugRelease配置中的Objective-C项目,调用类方法足以触发+ initialize。我会说这是一个错误。您可能想为它提供雷达。