我的问题说明了一切。有可能吗?这很奇怪,我不知道去哪里看或做什么。一切都在模拟器中发布,当我使用调试模式在应用程序中运行时。我可以在我的 dealloc 方法中看到日志,并且一切正常。但是当我在发布模式下运行我的应用程序时。对象不被释放。
其他人有这个问题吗?
我的问题说明了一切。有可能吗?这很奇怪,我不知道去哪里看或做什么。一切都在模拟器中发布,当我使用调试模式在应用程序中运行时。我可以在我的 dealloc 方法中看到日志,并且一切正常。但是当我在发布模式下运行我的应用程序时。对象不被释放。
其他人有这个问题吗?
据我了解,无论您是在调试还是发布模式下构建,ARC 都会以不同的时间自动发布对象。这是由于编译器的优化标志-O0
处于调试和-O3
/或-Os
发布状态。
我记得在 WWDC '13 的一次谈话中听到一位 Apple 工程师谈论它(我将尝试找到会话名称),据我记得,这种行为将在 Xcode 构建的未来中得到改进,以使 ARC 处于调试状态模式的行为更像它在发布模式下的行为。
我知道它没有多大帮助,但我对 ARC 实现不够熟悉,无法提供更多细节。
另请参阅如何调试 iOS 中发布模式构建的问题?帮助在发布模式下调试您的代码。
你会不会不小心让 Zombies 在发布模式下打开但在调试时关闭?通常所有诊断程序都已关闭以供发布,但它符合您的描述。