首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未启用时NSZombies崩溃,启用时可以工作

未启用时NSZombies崩溃,启用时可以工作
EN

Stack Overflow用户
提问于 2014-02-18 14:45:59
回答 1查看 350关注 0票数 1

我有一个ios电子邮件应用程序,一切都很好,除了一个特定的用户帐户信息,我得到的崩溃与什么看起来像一个过度释放的对象。

问题是,如果启用NSZombies (或使用仪器),就不会发生崩溃。每次NSZombies被禁用时都会发生这种情况,但是当我想看看什么是超额发布的时候,应用程序就会像预期的那样运行。

所以我的问题是,如果让僵尸阻止它发生,我该如何追踪?另外,僵尸到底在做些什么来防止坠机,它是否紧紧抓住物体来监视它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-18 14:59:06

所以我的问题是,如果让僵尸阻止它发生,我该如何追踪?

如果可能的话,使用更少的-autorelease

您可以考虑使用Malloc Stack日志记录来缩小分配范围或调用站点。

创建本地自动发布池也可以帮助您识别范围。

有时,记忆涂鸦或护卫Malloc可以有所帮助。

仅仅在Sim/设备上运行可能会导致不同的--甚至是不同的设备模型。

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

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

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

另外,僵尸到底在做些什么来防止坠机,它是否紧紧抓住物体来监视它呢?

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21857200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档