簡體   English   中英

使用UIImage時的內存管理

[英]Memory management when using UIImage

我的應用程序大量使用UIImage對象根據用戶輸入和之前設置的圖像更改單個UIImageView上的圖像。 我使用[UIImage imageNamed:]來創建我的UIImage對象。

我想這不是使用UIImage的最好方法因為我的內存使用量隨着時間的推移而不斷增加而且永遠不會下降。 (當我使用Object Allocations運行應用程序時已經知道了這一點,而且我沒有使用其他NSString變量,只有BOOL和UIImage)

我應該如何有效地使用UIImage和UIImageView對象來保持低內存?

謝謝

[UIImage imageNamed:] 

將您正在加載的圖像緩存到內存中。 如果你想一遍又一遍地重復使用同一組圖像,這很好,但是如果你經常顯示不同的(或大的)圖像,那么你應該使用:

NSString *fileLocation = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
NSData *imageData = [NSData dataWithContentsOfFile:fileLocation];

[UIImage imageWithData:imageData];

代替。

要管理帶有圖像的內存,按照@russtyshelf所說,你必須將圖像文件轉換為數據並將其轉換為圖像,但之后你必須使圖像實例為nil來清理緩存。 即在viewdidload()中你必須寫為:

let image = [UIImage imageWithData:imageData];

並且在控制器的deinit上或在切換視圖期間,您的圖像必須為零

image = nil

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM