2010-06-17 72 views
0

我正在開發一個已經開發的應用程序,但是在開發階段沒有考慮到內存管理。 那麼,一旦出現內存警告,我應該怎麼做才能保持App內存使用率較低? 是否有任何通用工具或某些代碼可用於釋放任何未使用的內存?iPhone內存問題

回答

1

兩件事。首先,如果您使用任何類型的視圖層次結構(標籤欄,UINavigationController或您自己推出的某個東西),則消息將向上傳播。這意味着根級UIViewController子類中的內存消息的一個處理程序可以處理整個應用程序的內存事件,這非常方便。

其次,你想追求低垂的果實。在我目前正在研究的應用程序中,我有幾個不同的包含應用程序數據的字典數組,每個這些字典都包含縮略圖和較大的圖像。顯然,這些構成了我記憶中的大部分內容。所以我的根視圖控制器在得到內存警告時做的第一件事是通過這些數據集並將這些圖像設置爲nil。因爲它們是保留的屬性,所以在調用setter時調用它們並釋放內存中的圖像。然後我在視圖控制器中有函數來注意這些圖像字段的無效性並從服務器重新加載它們。順便說一下(好吧......兩件事情和一個「順便說一句」),記憶警告不是問題。有些人似乎對讓他們感到不好,想重新設計關於他們的應用程序的一切,所以他們從來沒有得到過。這真的沒有必要;即使是最好設計的應用程序也會偶爾發出內存警告,只是因爲設備上的後臺應用程序的不可預測性。重要的是要處理好他們。

0

你應該看看該方法

- (void)didReceiveMemoryWarning 
您UIViewControllers的

。當您收到內存警告時會調用此方法。在這裏您可以釋放當前未使用的對象。但是確定使用什麼和不使用什麼是你的一部分。

XCode的「構建和分析」功能是一種工具,可以用來查看代碼是否包含任何明顯的內存泄漏。

你應該看看在UIViewController類引用的一小部分「內存管理」: http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html

也是一個重要的文件是「內存管理編程指南」: http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html