現在無休止的時間一直在尋找解決這個問題的方法。問題很簡單。我在筆尖有一個UIImageView
,我正在從網上加載一張圖片,並將圖片設置爲UIIImageView
。我釋放viewController。 Dealloc實際上正在調用(!)並再次加載viewController和圖像。這可以通過非常容易地進入背景模式來完成。儀器泄漏不報告任何泄漏,但它表明它在分配中保持圖像在內存中並且保持增長。UIImageView setImage泄漏?
基本例如:
-(id)init {
if((self = [super init])) {
id path = [NSString stringWithFormat:@"http://www.aSite.com/largeImage.jpg"];
NSData* urlData = [[NSData alloc] initWithContentsOfURL:url];
UIImage* img = [[UIImage alloc] initWithData:urlData];
[background setImage:img];
[urlData release];
[img release];
}
return self;
}
-(void)dealloc {
[background release];
[super dealloc];
}
有人說實際上的UIImageView泄漏,或實際CGImage。有些人說樂器顯示不正確。我在用2.5mb大圖片做10-15次後得到了內存警告。結果來自實際設備和最新的iOS(或至少4-5周前)。由於UIImageView被很多人使用,我認爲它很容易找到問題或從蘋果獲得修復?
來源CGImage泄漏的: (iphone) UIImageView setImage: leaks?
編輯:我是升技tierd當我寫的例子。示例現在正確。我也嘗試過使用自動釋放對象,同樣的「泄漏」仍然存在。如果你要寫答案,請回答問題。
與問題無關。另外[[UIImage alloc] initWithData:urlData]保留了NSData,因此在[backgroundsetImage:img]之前釋放它是可以的...... – David 2011-05-04 05:31:41