инструмент для утечки памяти iphone / ipad - PullRequest
1 голос
/ 28 сентября 2010

Чтобы попробовать инструмент утечки памяти, я создаю приложение ipad на основе представления. Это очень просто. Я создаю приложение на основе представления по умолчанию. В loadView ViewController я говорю

// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {

    [super loadView];

    UIView *view = [[UIView alloc] init];
    view.frame = CGRectMake(0, 0, 768, 1004);
    view.backgroundColor = [UIColor redColor];
    [self.view addSubview:view];
    [view removeFromSuperview];
}

Итак, я создаю представление внутри loadView, затем добавляю его в корневой вид и удаляю его.

Но представление создается методом, и я никогда не освобождаю его.

Так что я думаю, что после завершения loadView созданный вид просочился, верно?

Я использовал инструмент для проверки утечек памяти, он вообще не сообщает об утечке.

Кто-нибудь может объяснить, почему?

спасибо

1 Ответ

0 голосов
/ 29 сентября 2010

Инструмент утечки - либо командная строка, либо инструмент распределения - сообщает утечка как объект, на который больше ничего не ссылается .Проблема, однако, в том, что случайный указатель на объект все еще может находиться в памяти где-то, даже если эта память никогда не будет считана снова.

Т.е. инструмент утечки не является точным на 100%, и он стремится недавать ложные срабатывания (которые гораздо более неприятны).

Я обычно использую инструмент Распределения, просматриваю список объектов, которые «живы» в любой момент времени, и мысленно оправдываю их существование.

Вы правы в том, что указанный фрагмент кода вызовет утечку экземпляра UIView.Если бы вы набрали build and analyze, я бы ожидал, что Xcode определит проблему.

...