2011-06-20 84 views
1

我的應用程序中有一個奇怪的錯誤 - 當應用程序正在運行時,我有時會遇到一種奇怪的行爲,應用程序正在「反駁」並回到第一個屏幕(就好像調用了ViewDidLoad一樣再次)。它沒有明確的邏輯(有時會在應用程序運行幾秒後發生,有時我可能會潛伏几個小時而不會發生)。跟蹤內存警告源 - iOS

我懷疑這個問題涉及到一些內存問題 - 當我使用調試器運行應用程序時,我可以在LOG中看到我在發生錯誤之前收到內存警告:收到內存警告。等級= 1

  1. 是否有人熟悉這種行爲?意思是,應用程序在接收到內存警告時被「反駁」?
  2. 由於我不知道是什麼導致了內存問題,有沒有人有任何想法我應該如何跟蹤它?任何推薦的工具來做到這一點?

任何幫助將非常感激。

+0

使用泄漏工具和分配工具來跟蹤內存問題。你可以做的第一件事是建立和分析。這將指出你在代碼庫中泄漏內存的所有地方。 –

+0

內存警告很容易出現,無需泄漏,因此無論如何都必須正確處理它們。事實上,他們只是預計。 – Eiko

回答

1

使用儀器工具在運行時查找泄漏和物體大小。當我們使用UIImagePickerController來選擇圖像時,內存警告有時也會出現。也做一個靜態分析使用鐺靜態分析器有一個貴公司的應用程序編寫的谷歌你找到應用程序。最後但並非最不重要的一些內存管理指南。

UPDATE

儀器是內置到xcode的。通過從下拉菜單中選擇泄漏來運行您的項目。在谷歌搜索如何使用儀器。

下面是一個屏幕截圖

enter image description here

有關谷歌的Objective-C內存管理內存管理搜索,你會得到一堆的文章。另請閱讀Objective-C 2.0的屬性。

+0

感謝Rahul的快速回復;幾個問題,如果我可能: 1.我如何到達您提到的儀器工具? 2.您是否有任何內存管理指南的建議?一個剛剛開始的人可讀 –

+0

您是否知道儀器工具可能位於XCode4中? –

+0

@Ohad Regev在這裏你去http://stackoverflow.com/questions/5304390/instruments-in-xcode-4 –

2

如果出現內存警告,某些離屏視圖可能會被釋放並在稍後重新載入。如果你沒有正確處理這種情況(即初始化新鮮),你看到的行爲是可能的。模擬器可以嚮應用程序發送一條內存警告 - 所以我建議在一分鐘內(不同的視圖,層次結構等)玩弄你的應用程序,然後觸發警告並看看會發生什麼。

+0

嗨榮子,謝謝你的答案。我不確定我想去那裏,但我該如何「妥善處理這種情況(即初始化新鮮)」? 你的意思是我應該實現「ApplicationReceivedMemoryWarning」或類似的東西,並做一個有組織的行動,以防萬一它發生? –

+0

有回調,特別是在視圖控制器類。雖然我不會正式推薦它,但如果不在小內存佔用的應用程序中泄漏內存,那麼實現它不做任何事情通常都是足夠好的解決方案。正確的做法需要考慮更多因素 - 我認爲蘋果的一些指南會詳細介紹。 – Eiko