2009-02-22 51 views
0

好的,我在我的應用程序中遇到了一個非常惱人的錯誤。這讓我發瘋,而且我確信它超出了我的技能水平,因爲我正在學習。iPhone Bug應用程序bug問題與挑戰

這裏是錯誤的初始概要:A shot in the dark - Application bug

不過,我已經找到一種方法來始終如一地重現bug(僅在設備上並不在仿真器)

首先創建一個新的游泳池和保存。然後在一天內添加20個空白時間。保存它,這是問題開始的地方。 (當你回到主要的細節視圖時,tableview已經被告知這樣做了,它已經擺脫了編輯模式。現在,如果您回到當天查看剛剛添加的時間條目,他們仍然在那裏。

如果您返回列出所有游泳池的主要整體桌面視圖,現在回到您添加消失時間的那一天。

添加一次,這一切都可以節省。添加二十個,它不會保存。 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 [在] gmail.com

感謝,

+0

而不是錢,你可以考慮增加一個獎勵的聲望。我注意到,有一天SO給了我這個選擇 - 似乎是一個新功能。 – 2009-02-23 12:47:28

回答

0

最有可能的,你是無法前進的道路上的某個地方保留一些對象。當一個對象被釋放,然後內存被重新用於其他事情時,你會得到各種不良行爲,包括崩潰或其他對象的神祕「消失」。

您可以嘗試的一件事是將斷點放入您的自定義類的-dealloc方法中。然後你可以看到它們從哪裏被釋放。但最有可能的是,這會在AutoreleasePool被耗盡時結束,這並不會告訴你很多。

或者,使用一些memory debugging tools built into Cocoa進行調查。

該文檔適用於Mac OS X,但我認爲所有這些至少可以在iPhone模擬器中工作。我知道你的bug在模擬器中「沒有發生」,但這只是意味着症狀不同,而你並沒有注意到它們。

1

如果你還沒有這樣做,我建議開啓NSZombie支持,並且看看你的任何對象在被釋放後是否使用了它們。據我所知,這可以在模擬器和設備上打開。

0

感謝您的所有答案。現在已修好。

對於那些有興趣的人,我忘了在我的細胞子類的XIB中添加cellidentifer。

cellForRow:方法因此每次創建一個新的單元格。記憶很快就填滿了。然後,好像我的應用程序自動嘗試通過強制另一個tableView退出編輯模式而不是正確管理我的實例來減少胖子。

這又是一個內存問題。這不總是這種情況!?!

線索是在控制檯中的一個101錯誤,表明我的應用程序使用了太多的內存。哦,慢滾動tableView。