我一直相信运行时会在创建对象时自动使用 nil 初始化所有属性。
但是 App Store 的发布版本与开发期间的调试版本不同。我听说 Xcode 使用各种安全检查机制围绕变量和属性创建了更稳定的调试版本,这些机制可以防止崩溃但会使代码膨胀。
当您为分发而构建时,神话也是如此,编译器优化会去除这种“不必要的”调试代码以使代码更快。
我已经经历过在发布版本中突然发生的神秘错误。但现在一位开发人员也告诉我:在发布版本中,运行时不会将属性设置为 nil。它们未初始化。它们的价值是垃圾内存,除非您手动执行。因此!foobar
,除非您使用 nil 初始化属性,否则检查是不安全的。
到目前为止,除非我设置对象,否则我所有的应用程序始终假定属性为零。
这是正确的还是在我们创建对象时运行时仍然将我们的属性初始化为 nil?