ios - 发布构建配置中未调用 NSObject 的 initialize()

标签 ios swift xcode cocoa

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

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

例如:

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

最佳答案

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

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

关于ios - 发布构建配置中未调用 NSObject 的 initialize(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40783657/

相关文章:

ios - 不同构建配置的不同 Bundle Identifier

iphone - 通过 NSRegularExpression 获取 Javascript 函数之间的特定值?

ios - 我应该使用 XIB 还是 Storyboards?

ios - self.viewController.webView stringByEvaluatingJavaScriptFromString 不起作用

swift - 尝试使用 Swift 获取 String 中单个字符的 ASCII 值

ios - swift - 在 UITableVIew 中将多选设置为 true 时如何设置选择颜色

ios - 由 XCode 管理的配置文件

iOS View Controller 底部的空白区域

ios - XMPPFramework 与 Openfire 的 TLS/SSL 连接

swift - UICollectionView 显示按钮数组 Swift