Как определить, не была ли переменная выпущена в Objective-C? - PullRequest
1 голос
/ 05 мая 2011

Я удалил несколько релизов из своего кода, чтобы проверить, может ли инструмент Leaks в xCode уведомить меня о неверном коде:

...
UINavigationController *masterNav = [[UINavigationController alloc] initWithRootViewController:master];
UINavigationController *detailNav = [[UINavigationController alloc] initWithRootViewController:detail];
[master release];

splitViewController.viewControllers = [NSArray arrayWithObjects:masterNav, detailNav, nil];
//[masterNav release]; [detailNav release]; commented out

Однако я не вижу ни одного уведомления. Это потому, что память, выделенная для таких переменных, слишком мала? Мне нужен инструмент управления памятью на этом этапе, на котором я изучаю цель-C

спасибо

Ответы [ 3 ]

1 голос
/ 05 мая 2011

Ваше избыточное удержание (detailNav) еще не утечка, потому что на него все еще ссылаются splitViewController.viewControllers. Вот почему инструменты не покажут это как утечку.

Instruments не помечает избыточное удержание (не может). Только когда ваш объект осиротел, т.е. после того, как все другие объекты, не имеющие утечек, освободили свои ссылки, Инструменты будут отмечать его как утечку.

0 голосов
/ 05 мая 2011

перейдите в xcode и выберите проект. Затем нажмите на сборку и проанализируйте. Это даст вам некоторые утечки памяти

0 голосов
/ 05 мая 2011

Вы пробовали Product->Analyze в Xcode4? Это должно показать вам утечку.

...