【问题标题】:Potential leak of an object allocated on line 123 and stored into 'page'在第 123 行分配并存储到“页面”中的对象的潜在泄漏
【发布时间】:2012-01-07 18:07:46
【问题描述】:

分析工具给出了这行代码的潜在泄漏。

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];

        }
    }    

}

【问题讨论】:

    标签: objective-c memory-leaks


    【解决方案1】:

    你永远不会释放你在 sn-p 底部分配的页面(假设你没有使用 ARC)

    【讨论】:

      【解决方案2】:

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

      我在您的函数中看不到recycledPages 的声明,因此我认为它们与您的视图(或其他对象)相关联。然后,您需要在终止或关闭视图(或您识别的任何其他情况)时释放未使用的回收页面。

      如果你确实在这样做,那么分析工具可能不够“明亮”而无法识别它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多