Что нужно выпустить в AppDelegate? - PullRequest
0 голосов
/ 27 сентября 2011

У меня есть проект, который я создал с помощью шаблона приложения Xcode Single View Application.Очевидно, он поставляется с контроллером представления и файлом делегата приложения.Все отлично работаетЯ просто хотел использовать инструмент Xcode Analyze в первый раз, чтобы убедиться, что все в порядке, прежде чем отправлять в магазин приложений.Я получаю потенциальную ошибку утечки для следующих строк кода в делегате приложения:

self.viewController = [[myViewController alloc] initWithNibName:@"myViewController"     bundle:nil]; 
self.window.rootViewController = self.viewController;

Полный делегат приложения выглядит следующим образом:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:    (NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.viewController = [[myViewController alloc] initWithNibName:@"myViewController" bundle:nil]; 
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

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

Ответы [ 2 ]

1 голос
/ 27 сентября 2011

Ничего не нужно освобождать в делегате приложения, так как приложение завершается, и ОС восстановит все ресурсы.Действительно, маловероятно, что dealloc даже будет вызван.

См. SO link для получения дополнительной информации.

Если вам нужно выполнить очистку при выходе из приложения, используйте applicationWillTerminate:.

0 голосов
/ 27 сентября 2011

Строка self.viewController = [[myViewController alloc] ... выделяет экземпляр и затем присваивает его свойству self.viewController.При выделении счетчик ссылок будет равен 1, но присвоение свойству с установленным значением retain снова увеличит счетчик ссылок.

Поскольку счетчик ссылок уменьшается на 1 в значении, этот объект будетникогда не быть освобожденным = утечка.

Подробнее об этом см. в разделе об управлении памятью Objective-C в документации для разработчиков на iOS.

...