2013-01-19 77 views
0

我的應用程序拍攝一張照片,裁剪它,然後在使用NSCoding保存之前使用濾鏡進行播放。如果我嘗試連續拍攝4-5張照片,應用程序將會崩潰並且沒有錯誤消息。我真的不知道如何調試。我猜這是一個內存問題,但顯然在iOS 5中沒有使用ARC的release。我添加了一張沒有告訴我的照片,但也許可以提供幫助。應用程序在拍照時崩潰沒有錯誤

enter image description here

回答

2

您的應用程序明顯(如圖片所示)分配越來越多的內存,而無需再次釋放它時,它不需要任何更多的,你有相當多的(大)內存泄漏。

檢查你的內存管理,並確保例如保存在磁盤上的圖像數據,也不會在任何地方顯示。

+0

如果我使用'ARC',應該檢查什麼內存管理? – Segev

+0

使用'ARC'並不意味着您不必關心或擔心內存管理。你仍然可以做錯事。儀器向您顯示物體的創建和釋放位置。下面的文章可能是您開始學習使用工具來跟蹤這些問題:http://www.raywenderlich.com/23037/how-to-use-instruments-in-xcode – Kerni

0

我知道的有兩個原因會發生這種情況:

  1. 超出內存
  2. 你擋住了太長時間

的UI爲#1,把某種日誌操作的您的應用程序代理didReceiveMemoryWarning,並且還會掃描控制檯日誌以查找系統發出的(容易忽略)內存警告。在你的應用程序被殺之前,你會得到一段時間的內存警告。

但是,我不知道有什麼好方法可以檢測出當你爲#2死亡時。

但它看起來像你的問題是內存。

+0

您也可能想閱讀我在上面的評論中鏈接了文章。您提到了監督人員爲什麼要殺死該應用程序的兩個原因。看上面的圖片很明顯,這裏的問題是內存消耗過多,時間線上的小黑旗顯示應用程序被殺死的時間。另外,記錄'didReceiveMemoryWarning'並沒有什麼幫助,因爲這隻會告訴你iOS需要你的應用程序釋放內存。還有其他情況發生這種情況,即使您沒有問題,也不會顯示您遇到問題。 – Kerni

+0

@Kerni - 正確的記錄didReceiveMemoryWarning並不能證明它是一個內存問題,也沒有指出泄漏的具體原因,但它確實給了你一個強烈的暗示你有內存問題。不幸的是,沒有可靠的方法來記錄整個內存消耗的時間間隔,在探查器之外,以便了解它可能跳躍的位置。但是,一旦你有了「提示」,分析器(雖然使用起來很尷尬)可以指出你的問題。 –

相關問題