在123行上分配的对象的潜在泄漏并存储在'页面'中

问题描述:

分析工具在此行代码中提供了潜在的泄漏。在123行上分配的对象的潜在泄漏并存储在'页面'中

for (int index = firstNeededPageIndex; index <= lastNeededPageIndex; index++) { 

任何人都可以帮忙,因为我无法弄清楚。

下面是代码

- (void)tilePages 
{ 


    // Calculate which pages are visible 
    CGRect visibleBounds = pagingScrollView.bounds; 
    int firstNeededPageIndex = floorf(CGRectGetMinX(visibleBounds)/CGRectGetWidth(visibleBounds)); 
    int lastNeededPageIndex = floorf((CGRectGetMaxX(visibleBounds)-1)/CGRectGetWidth(visibleBounds)); 
    firstNeededPageIndex = MAX(firstNeededPageIndex, 0); 
    lastNeededPageIndex = MIN(lastNeededPageIndex, [self imageCount] - 1); 

    // Recycle no-longer-visible pages 
    for (ImageScrollView *page in visiblePages) { 
     if (page.index < firstNeededPageIndex || page.index > lastNeededPageIndex) { 
      [recycledPages addObject:page]; 
      [page removeFromSuperview]; 
     } 
    } 
    [visiblePages minusSet:recycledPages]; 

    // add missing pages 
    for (int index = firstNeededPageIndex; index <= lastNeededPageIndex; index++) { 
     if (![self isDisplayingPageForIndex:index]) { 
      ImageScrollView *page = [self dequeueRecycledPage]; 
      if (page == nil) { 
       page = [[ImageScrollView alloc] init]; 
      } 
      [self configurePage:page forIndex:index]; 
      [pagingScrollView addSubview:page]; 
      [visiblePages addObject:page]; 

     } 
    }  

} 

你永远不放开你分配你的代码段底部的页面的其余部分(假设你没有使用ARC)

将会有泄漏,如果“页面”加到recycledPages// Recycle no-longer-visible pages部分永远不会在// add missing pages部分重复使用。

我不能在你的函数中看到recycledPages的声明,因此我假设它们与你的视图(或另一个对象)绑定。然后,您需要在终止或关闭视图(或其他任何可识别的情况)时释放未使用的回收页面。

如果你真的这样做了,那么分析工具可能不够“明亮”以识别它。