【问题标题】:iPhone Bug App bug Question and challengeiPhone Bug App bug 问题和挑战
【发布时间】:2009-02-22 18:17:21
【问题描述】:

好的,我的应用程序中有一个非常烦人的错误。这让我发疯,我确信这超出了我的技能水平,因为我正在学习。

这是错误的初步概要:A shot in the dark - Application bug

但是我找到了一种方法来持续重现错误(仅在设备上而不是在模拟器中)

首先您创建一个新池并保存它。然后在一天中添加 20 个空白时间。保存它,这就是问题开始的地方。 (当您返回主要详细视图时,tableview 已将自己退出编辑模式并被告知这样做)。现在,如果您回到当天查看刚刚添加的时间条目,它们仍然存在。

如果您返回到列出所有池的主整体表格视图,现在返回您添加它们消失的时间的那一天。

添加一次,一切都很好。添加二十,它不保存。卧槽!!

主菜单列出池:

详细视图:

编辑视图:

时间编辑视图:

添加时间:

如果有更多猜测,我将不胜感激。但除了这个问题之外,我还悬赏 25 英镑(对不起,我是个穷学生)给任何有能力先修复这个 bug 的人!

如果您感兴趣,我的电子邮件是 danmorgz[at]gmail.com

谢谢,

【问题讨论】:

  • 你可以考虑增加声誉而不是金钱。我注意到 SO 前几天给了我这个选项 - 似乎是一个新功能。
  • 太好了,我现在就去看看。谢谢!
  • 您应该编辑旧答案而不是发布新答案。

标签: iphone objective-c cocoa-touch


【解决方案1】:

如果您还没有这样做,我建议您打开NSZombie 支持,看看您是否在使用任何对象被释放后。据我所知,这可以在模拟器和设备上打开。

【讨论】:

    【解决方案2】:

    最有可能的是,您未能在途中的某个地方保留一些对象。当一个对象被释放,然后内存被重新用于其他用途时,您会遇到各种不良行为,包括崩溃或其他对象的神秘“消失”。

    您可以尝试的一件事是将断点放入自定义类的 -dealloc 方法中。然后你可以看到他们从哪里被释放。不过,最有可能的是,这最终会在 AutoreleasePool 耗尽时结束,这不会告诉你太多。

    或者,考虑使用一些memory debugging tools built into Cocoa

    该文档适用于 Mac OS X,但我认为大部分内容至少可以在 iPhone 模拟器中运行。我知道您的错误在模拟器中“不会发生”,但这实际上仅意味着症状不同,而您没有注意到它们。

    【讨论】:

      【解决方案3】:

      感谢您的所有回答。现在已经修复了。

      对于那些感兴趣的人,我忘记在我的单元子类的 XIB 中添加一个单元标识符。

      cellForRow: 方法因此每次都创建一个新单元格。内存很快就被填满了。然后似乎我的应用程序通过强制另一个 tableView 退出编辑模式并且没有正确管理我的实例来自动尝试减少脂肪。

      这又是一个内存问题。不是一直都是这样吗!?!

      提示是控制台中出现一次性 101 错误,表明我的应用程序使用了太多内存。哦,还有一个滚动缓慢的 tableView。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-15
        • 1970-01-01
        相关资源
        最近更新 更多