據我所知,有兩級內存警告。 applicationDidReceiveMemoryWarning不帶有警告級別。有沒有辦法獲得這些信息?applicationDidReceiveMemoryWarning中的內存警告級別
回答
我把這個作爲一個單獨的答案比我的另一個添加,因爲它是一個單獨的答案。我之前給出的答案是實際的,你應該使用的。它歸結爲「處理你通知的一個級別的記憶警告,不關心細節」。
但是,如果你真的想知道更多一點,看看這個未公開的API:http://www.opensource.apple.com/source/Libc/Libc-594.1.4/include/libkern/OSMemoryNotification.h
這是產生記憶警告,內核代碼的頭,而且它聲明瞭以下的typedef:
typedef enum {
OSMemoryNotificationLevelAny = -1,
OSMemoryNotificationLevelNormal = 0,
OSMemoryNotificationLevelWarning = 1,
OSMemoryNotificationLevelUrgent = 2,
OSMemoryNotificationLevelCritical = 3
} OSMemoryNotificationLevel;
我們顯然沒有執行數學運算來說明要返回哪個警告的關鍵方法(OSMemoryNotificationCurrentLevel()
),但這是可能返回值的列表。
您可以使用Mach.h庫來測試設備上的實際內存級別(如果您想要某些代碼,請告訴我),然後使用OSMemoryNotificationCurrentLevel()
獲取當前級別的內存警告,並確實將通知級別映射到機器的物理狀態。這樣的應用程序在應用程序商店中完全不受歡迎,並且它不會真正幫助您實際的生活發展,您的工作是響應您收到的單一級別的低內存警告。
這並不是說有兩個級別的警告 - 不是像「你有一點點內存剩餘」,然後「你剩下的內存少」。這是相同的「低內存」警告被解僱了兩個地方。一旦在當前視圖中的UIViewController子類上(並且,如果該UIVC沒有實現didReceiveMemoryWarning
,那麼它將冒泡到視圖控制器堆棧的頂部)並且再次在applicationDidReceiveMemoryWarning
中的應用代理上。一個人不是比另一個更糟糕的警告,他們只是兩個不同的鉤子來執行對來自操作系統的相同警告的響應。
這是平臺的怪癖之一,你不能真正知道你有多少內存可用在任何時間。後臺應用程序(郵件,電話等)吸收儘可能多的RAM,剩下的就剩下剩下的事情了,而且只有這樣才能知道自己變得太大了。
通過拋棄現在不需要的資源,恰當地做出反應非常重要。從低垂的果實開始 - 任何你以後需要保留的東西。舉例來說,您可以隨意拖放圖像,然後在需要時從服務器或磁盤中取出圖像。
我完全同意,但我不確定我們在談論同樣的事情。起初我沒有實現任何提到的內存警告方法。結果發生的是以下幾點。在應用程序中瞎弄後,我在調試控制檯中收到以下消息: 「2010-08-06 11:12:42.880 blaApp [9591:207] Received memory warning。Level = 1」 我一直在做什麼我做了,幾秒鐘後,我得到了 「2010-08-06 11:12:55.171 blaApp [9591:207]收到內存警告。我想知道的是這個級別的屬性。 – user309305 2010-08-06 09:20:36
- 1. 如何解決內存警告級別1,然後內存警告級別2?
- 2. iPhone內存警告級別= 2
- 3. 接收內存警告級別= 1,級別= 2然後崩潰
- 4. 收到內存警告。 Webview中的級別= 1
- 5. 如何解決ipad中的內存警告級別1?
- 6. 收到內存警告。等級= 2和級別= 1在cocos2d
- 7. 警告:接收到的內存警告級別爲1並且崩潰
- 8. 獲取「接收到的內存警告級別= 1」
- 9. 由於UIImage引起的內存警告級別1
- 10. 自定義過時的警告,在c#中拋出級別4的警告,而不是級別2的警告#
- 11. IntelliJ提交警告級別
- 12. snmp4j警告日誌級別
- 13. QT警告級別暗示
- 14. 我如何刪除內存警告級別= 2
- 15. 收到內存警告。當顯示UIImagePickerController時級別= 1
- 16. 內存警告級別指示器 - iPhone SDK
- 17. 收到內存警告。等級= 1
- 18. 收到內存警告[1級]
- 19. 收到內存警告。 1級
- 20. 警告接收到內存警告。等級= 2 iPhone
- 21. 如何在Monotouch 6.2(Xamarin.iOS)中訪問DidReceiveMemoryWarning中的當前內存警告級別?
- 22. ipad - 內存警告級1,2,但仍有足夠的內存
- 23. 內存警告UIImagePickerController
- 24. GPUImage內存警告
- 25. UIImagePickerController內存警告
- 26. 警告級別不顯示log4net的
- 27. 關於級別對象的CA2000警告
- 28. SonarQube:抑制功能級別的警告?
- 29. 我們如何處理iPhone中的內存級警告?
- 30. 收到的內存警告
我明白了。並且非常感謝這些信息,這非常有用。我的想法是,如果我在警告2級後才被踢掉,也許我可以利用這一點,並且只在警告級別2時纔會真正做出令人痛苦的阻礙。 – user309305 2010-08-06 13:23:35
我認爲警告級別二意味着「你現在要離開了」。在實踐中,你會得到一杆。您可能會在應用程序的整個生命週期中多次獲得一次,但沒有「建議」級別的內存警告。你應該認真對待你的第一個警告。 – 2010-08-06 14:08:24
確實有人使用這個存儲目標應用程序?我的意思是,我不想讓應用程序被拒絕= D – Omer 2011-05-09 18:29:04