gpt4 book ai didi

ios - NSZombies 在未启用时崩溃,在启用时工作

转载 作者:行者123 更新时间:2023-11-29 12:53:22 25 4
gpt4 key购买 nike

我有一个 ios 电子邮件应用程序,一切正常,除了一个特定的用户帐户信息,我遇到与看起来像过度释放的对象相关的崩溃。

问题是,如果我启用 NSZombies(或使用 Instruments),则不会发生崩溃。每次禁用 NSZombies 时都会发生,但当我想查看过度发布的内容时,应用程序会按预期执行。

所以我的问题是,如果启用 Zombies 可以防止它发生,我该如何追踪它?另外,Zombies 到底做了什么来防止崩溃,它是否卡在物体上以监视它?

最佳答案

So my question is, how do I track this down if enabling Zombies prevents it from occurring?

如果可能,少用 -autorelease

您可能会考虑使用 Malloc 堆栈日志记录 来缩小分配或调用站点的范围。

创建本地自动释放池也可以帮助您确定范围。

有时,Memory Scribbling 或 Guard Malloc 可以提供帮助。

仅仅在 Sim/Device 上运行可能会产生差异——甚至是不同的设备模型。

消除所有其他内存问题(例如泄漏、循环引用)也可以帮助您更接近于识别此问题。

如果它是标记指针,您还可以考虑检查地址。

甚至在更多地方引入消息传递也有助于缩小范围。如果 obj 是一个僵尸,[obj self] 将是一个错误。

Also what exactly is Zombies doing to prevent the crash, is it hanging onto the object to monitor it?

是的。一个对象的 -dealloc 将像往常一样被调用,但是(通常)分配使用的内存不会被返回,并且该实例将变成僵尸 - 如果收到消息,该实例会产生运行时错误。

关于ios - NSZombies 在未启用时崩溃,在启用时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21857200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com