Почему этот код вызывает утечку памяти? - PullRequest
5 голосов
/ 15 февраля 2010

Инструмент утечки в 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];
}

Я имею в виду ... tbi и myVC IS выпущены в конце, а alloc IS сбалансирован. Так что не так? Я не понимаю.

Ответы [ 2 ]

3 голосов
/ 15 февраля 2010

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

2 голосов
/ 16 февраля 2010

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

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

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

...