2010-02-24 68 views
0

我已閱讀關於此功能didReceiveMemoryWarning,實際上並沒有真正幫助。 我想展示一個UIAlert視圖來告訴用戶他即將採取的行動將導致內存問題。iPhone內存警報

因此,除了崩潰,這是一個骯髒的方式來通知用戶有收到內存警告,是否有可能實現的UIAlertView?

回答

3

在您的應用程序委託類(如MyApplicationAppDelegate.m)實現didReceiveMemoryWarning方法:

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 
{ 
    // Show an alert 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" 
                message:@"Running low on memory" 
               delegate:nil 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil]; 

    [alert show]; 
    [alert release]; 
} 
+0

這是否阻止應用後崩潰用戶按下「確定」? – erastusnjuki 2010-02-24 13:28:37

+0

不是,它只是顯示警報。爲了防止崩潰,你必須做一些事情來恢復一些內存,例如擺脫不用的對象和視圖 – pheelicks 2010-02-24 14:11:51

0

的行動,他即將採取將 導致問題的內存

如果有一些你知道的用戶採取的行動會導致記憶問題,你應該讓他們不要採取那個行動,或者當他們準備採取行動時, tview)。

+0

這是唯一的出路嗎? – erastusnjuki 2010-02-24 13:29:45

+0

好吧,它看起來像你要求的是iPhone操作系統預先分析任何即將運行(即時)作爲用戶操作結果的代碼,並在運行代碼之前確定(再次飛)通過運行代碼將發生內存問題。我不是100%肯定的,但如果有辦法做到這一點,我會感到震驚。這就是爲什麼蘋果有良好的編碼實踐和內存管理的原則。如果操作系統可以「向前看」或「展望未來」,並確定通過運行某些代碼會發生錯誤,那麼任何事情都不會崩潰。 – cmcculloh 2010-02-25 16:15:16

1

Pheelicks確實給你一個很好的回答你的問題,但這並不是你想要做的。當您收到此警告時,您已處於內存不足狀態。當您收到此警告時,您想要執行的操作是釋放盡可能多的內存。就像您可能保留在內存中的大圖像,大型字符串或任何其他大型對象。樂器將幫助你找到罪魁禍首。

此外,你還需要實現分配的內存很多的任何視圖控制器didReceiveMemoryWarning,使他們能夠做一些清潔和消毒那裏也

希望這有助於:)