簡體   English   中英

將uiimage設置為nil不會使用ARC釋放內存

[英]Setting uiimage to nil doesn't release memory with ARC

我有一個scrollview,它在滾動頁面時顯示不同的圖像,例如PhotoScroller。 我正在使用ARC。 當有人滾動到另一個頁面時,我將UIImageView的當前未顯示的圖像屬性設置為nil,這是(嘗試)以避免內存崩潰(這種情況仍在發生)。 然后,當用戶滾動到新頁面時,該頁面的圖像以及該頁面之前和之后的頁面都將設置為UIImageView的image屬性(以平滑查看)。 頁面的UIImage全部保存在一個數組中。 但是,當我滾動瀏覽頁面時,內存使用率一直在上升,好像將UIImageView的image屬性設置為nil並不會從內存中釋放它。 我使用initWithContentsOfFile初始化我的UIImages。 我也嘗試了imageNamedimageWithContentsOfFile ,但是沒有運氣。 這是我的scrollview代碼:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
int indexShown = self.scrollView.bounds.origin.x / kScrollObjWidth;

for(NSNumber *index in indexesToRemove)
{
    UIImageView *imgViewToRemove = [[self.scrollView subviews] objectAtIndex:[index intValue]];
    imgViewToRemove.image = nil;
}
[indexesToRemove removeAllObjects];

UIImageView *imgViewToReplace = [[self.scrollView subviews] objectAtIndex:indexShown];
[imgViewToReplace setImage:[pageUIImagesArr objectAtIndex:indexShown]];
[indexesToRemove addObject:[NSNumber numberWithInt:indexShown]];

if(indexShown != 0 && ![[[self.scrollView subviews] objectAtIndex:indexShown-1] image])
{
    imgViewToReplace = [[self.scrollView subviews] objectAtIndex:indexShown-1];
    [imgViewToReplace setImage:[pageUIImagesArr objectAtIndex:indexShown-1]];
    [indexesToRemove addObject:[NSNumber numberWithInt:indexShown-1]];
}
if(indexShown != kNumImages-1 && ![[[self.scrollView subviews] objectAtIndex:indexShown+1] image])
{
    imgViewToReplace = [[self.scrollView subviews] objectAtIndex:indexShown+1];
    [imgViewToReplace setImage:[pageUIImagesArr objectAtIndex:indexShown+1]];
    [indexesToRemove addObject:[NSNumber numberWithInt:indexShown+1]];
}

currentView = [[self.scrollView subviews] objectAtIndex:indexShown];
//check which view is being shown`

頁面的UIImage全部保存在一個數組中。

當您將UIImageView的屬性設置為nil時,不會釋放UIImage ,因為數組仍保留對其的引用。 至於內存的增長,可能是分配了其他東西。 我建議您看一下Instrument的對象分配工具,以追蹤滾動時到底在增長什么。

暫無
暫無

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

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