你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> ios6 處理內存警告(1)

ios6 處理內存警告(1)

編輯:IOS技巧綜合
[摘要]本文是對ios6 處理內存警告的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

iPhone下每個app可用的內存是被限制的,如果一個app使用的內存超過20M,則系統會向該app發送MemoryWarning消息。收到此消息後,app必須正確處理,否則可能出錯或者出現內存洩露。

app收到MemoryWarning後會調用:UIApplication::didReceiveMemoryWarning->UIApplicationDelegate::applicationDidReceiveMemoryWarning,然後調用當前所有的viewController進行處理。因此處理的主要工作是在viewController。

當我們的程序在第一次收到內存不足警告時,應該釋放一些不用的資源,以節省部分內存。否則,當內存不足情形依然存在,iOS再次向我們程序發出內存不足的警告時,我們的程序將會被iOS kill掉。


iOS的UIViewController類給我們提供了處理內存不足的接口。在iOS 3.0之前,當系統的內存不足時,UIViewController的didReceiveMemoryWarining方法會被調用,我們可以在didReceiveMemoryWarining方法裡釋放掉部分暫時不用的資源。

從iOS3.0開始,UIViewController增加了viewDidUnload方法。該方法和viewDIdLoad相配對。當系統內存不足時,首先UIViewController的didReceiveMemoryWarining方法會被調用,而didReceiveMemoryWarining會判斷當前ViewController的view是否顯示在window上,如果沒有顯示在window上,則didReceiveMemoryWarining會自動將viewcontroller的view以及其所有子view全部銷毀,然後調用viewcontroller的viewdidunload方法。如果當前UIViewController的view顯示在window上,則不銷毀該viewcontroller的view,當然,viewDidunload也不會被調用了。但是到了ios6.0之後,這裡又有所變化,ios6.0內存警告的viewDidUnload被屏蔽,即又回到了ios3.0的時期的內存管理方式。


iOS3-iOS5.0以前版本收到內存警告:
調用didReceiveMemoryWarning內調用super的didReceiveMemoryWarning會將controller的view進行釋放。所以我們不能將controller的view再次釋放。
處理方法:

Java代碼

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved