UIImageView
當視圖不可見時會自動釋放圖像資源嗎?也許當應用程序獲得內存警告?UIImageView在不在視圖中時是否釋放資源?
如果不是,我正在考慮編寫一個子類(例如SmartReleaseImageView
),這樣做可以用於特別有利的情況。我被沿着這些線路思維行爲:
- 當
SmartReleaseImageView
接收setImage
消息時,將其與管理自身註冊例如SmartReleaseImageViewManager
。 - 當應用程序獲得內存警告時,
SmartReleaseImageViewManager
遍歷其所有SmartReleaseImageViews
並檢查它們中的任何一個是否未添加到超級視圖,或者檢查它們中的任何一個是否具有由於超出界限而被剔除的幀主窗口。 - 當
SmartReleaseImageView
檢測到它已進入視圖並被釋放時,它會再次加載圖像。所以也許,它需要首先有一個像setImageURL
而不是setImage
的方法。
這種行爲已經建成UIImageView
?或者它存在於任何第三方版本中?或者想法有問題嗎?
(我正在寫一個UIImageView重應用程序,這將是很好有一個全球性的包羅萬象的解決方案,這將有助於與內存的情況,而不是增加許多額外的代碼,以我的UIViewControllers
。)
編輯:到目前爲止的答案建議UIViewController
應該負責。這是真的,我想我的特殊情況是非典型的。在我的情況下,UIViewController可以包含很多自定義視圖(具有自己的層次結構),它不一定知道其結構,以及頻繁出入的視圖。因此,它很難知道何時發佈資源。但是,是的,也許我應該找到一種方法來處理這個問題本身......
聽起來有點像你從錯誤的一面處理問題。 UIViewController通常會在內存變得緊張的時候卸載其視圖 - 對我來說,似乎您應該簡單地依賴這些機制。 – Till 2012-01-31 11:22:35