【问题标题】:Should NSZombieEnabled be turned off for released app or not?NSZombieEnabled 是否应该为已发布的应用程序关闭?
【发布时间】:2011-12-27 17:27:07
【问题描述】:

启用NSZombieEnabled 后,它将提供一些防范EXC_BAD_ACCESS 在运行时发生的问题。

我正在努力确保没有/很少的内存泄漏,但我可能会过度释放,因此打开 NSZombieEnabled 将有助于防止这种情况,对吗?或者打开NSZombieEnabled,所有的内存释放操作都会被转换成无操作吗?这将是一个大问题是这样的。

【问题讨论】:

    标签: ios memory-management release nszombieenabled


    【解决方案1】:

    不,您不应该使用NSZombiesEnable。僵尸通过将释放对象的 isa 指针转换为“僵尸”类来工作。除非启用NSDeallocateZombies,否则不会释放此对象的存储空间。因此,如果您启用僵尸,您可能会泄漏内存。

    此外,Apple 表示不要在NSDebug.h 中启用它:

    不要依赖代码中是否存在这些符号 在此软件的未来版本中。当然,不要依赖于 生产代码中此标头中的符号。

    如果在 AppStore 上分发,我猜你不会通过审核。

    【讨论】:

      【解决方案2】:

      您应该关闭它,因为启用 NSZombieEnabled 意味着您分配的对象没有被释放,因此您的应用程序将泄漏。

      http://www.cocoadev.com/index.pl?NSZombieEnabled

      ''NSZombieEnabled 不应永久保留,因为默认情况下不会真正释放任何对象,这会使您的应用程序使用大量内存''

      【讨论】:

        猜你喜欢
        • 2016-11-26
        • 2012-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-22
        • 1970-01-01
        • 2018-10-24
        相关资源
        最近更新 更多