Потенциальная утечка объекта, размещенного в строке 123 и сохраненного в «странице» - PullRequest
1 голос
/ 07 января 2012

Инструмент анализа дает потенциальную утечку в этой строке кода.

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

        }
    }    

}

Ответы [ 2 ]

1 голос
/ 07 января 2012

Вы никогда не откроете страницу, выделенную в нижней части своего фрагмента (при условии, что вы не используете ARC)

0 голосов
/ 07 января 2012

Будет утечка, если «страница», добавленная к recycledPages в // Recycle no-longer-visible pages разделе, никогда не будет повторно использована в // add missing pages части.

Я не вижу объявления recycledPages вваша функция, поэтому я предполагаю, что они связаны с вашим взглядом (или другим объектом).Затем вам нужно освободить неиспользованные переработанные страницы при закрытии или закрытии представления (или любого другого условия, которое вы распознаете).

Если вы действительно делаете это, то инструмент анализа, вероятно, не «достаточно яркий», чтобы распознать его..

...