Почему этот код производит утечку памяти?

Инструмент Утечек в XCode показывает мне утечку памяти здесь. Я прокомментировал затронутую строку, которая Утечки жалуется на. Но я не вижу ошибки в своем управлении памятью...

- (void)setupViewController {
    MyViewController *myVC = [[MyViewController alloc] init];

    UITabBarItem *tbi = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemDownloads tag:1];
    myVC.tabBarItem = tbi; // LEAK: 128 bytes

    self.myViewController = myVC;

    [myVC release];
    [tbi release];
}

Я имею в виду... ЧМТ, и myVC выпущен в конце, и выделение сбалансировано. Так что случилось? Я не получаю его.

5
задан dontWatchMyProfile 15 February 2010 в 20:28
поделиться

2 ответа

если MyVc.tabBarItem уже установлен, все, на что он указывает, может не быть освобождено должным образом, что приведет к утечке.

3
ответ дан 14 December 2019 в 19:11
поделиться

Это просто показывает, что по крайней мере одно из следующих утверждений верно:

  1. Инструменты не идеальны и иногда обнаруживают утечки там, где их нет (и наоборот).
  2. Код Apple не свободен от ошибок.

На самом деле, оба верны.

2
ответ дан 14 December 2019 в 19:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: