iPhone Bug App bug问题和挑战

时间:2009-02-22 18:17:21

标签: iphone objective-c cocoa-touch

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

以下是错误的初始概述:A shot in the dark - Application bug

然而,我找到了一种方法来持续重现错误(仅限于不在模拟器中的设备)

首先,您创建一个新池并保存它。然后在一天内添加20个空白时间。保存它,这就是问题的开始。 (当你回到主要的详细信息视图时,tableview已经将自己置于编辑模式之外,并被告知这样做)。现在,如果你回到那天看你刚刚添加的时间条目,它们仍然在那里。

如果你回到列出所有游泳池的主要整体桌面视图,现在回到你添加消失时间的那一天。

添加一次,这一切都保存得很好。加20,它不保存。 WTF !!

主菜单列表池:

https://farm4.static.flickr.com/3503/3301053744_0325d5bc2c.jpg?v=0

详情视图:

https://farm4.static.flickr.com/3546/3300222271_223d2c74e9.jpg?v=0

修改视图:

https://farm4.static.flickr.com/3625/3300222887_b02c3e2052.jpg?v=0

时间编辑视图:

https://farm4.static.flickr.com/3547/3301056092_8d3ab78225.jpg?v=0

添加时间:

https://farm4.static.flickr.com/3635/3300224157_14c30cf58f.jpg?v=0

我更感谢你的猜测。但是除了这个问题之外,我还要向那些善于解决这个问题的人提供25英镑(对不起,我是一个可怜的学生)的赏金!

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

谢谢,

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

您可以尝试的一件事是将断点放入自定义类的-dealloc方法中。然后你可以看到他们从哪里取消分配。但最有可能的情况是,当AutoreleasePool耗尽时,最终会出现这种情况,这对您来说不会有多大帮助。

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

该文档适用于Mac OS X,但我认为大部分内容都适用于iPhone模拟器,至少。我知道你的错误“在模拟器中不会发生”,但这只是意味着症状不同,而你却没有注意到它们。

答案 2 :(得分:0)

感谢您的所有答案。它现在已经修好了。

对于那些感兴趣的人,我忘了在我的细胞亚类的XIB中添加一个cellidentifer。

因此,

cellForRow:方法每次都会创建一个新单元格。记忆很快就被填满了。然后,好像我的应用程序通过强制另一个tableView从编辑模式强制而不是正确管理我的实例来自动尝试削减脂肪。

这又是一个记忆问题。是不是总是这样!?!

线索是控制台中的一次性101错误,表明我的应用程序使用了太多内存。哦,还有一个慢滚动的表格。