application: didFinishLaunchingWithOptions: управление памятью - PullRequest
0 голосов
/ 12 декабря 2010

У меня вопрос по управлению памятью.В моем делегате приложения у меня есть следующий метод;где welcomeViewController - ивар.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    welcomeViewController = [[CBWelcomeViewController alloc] init];
    UINavigationController *appNavigationController = [[UINavigationController alloc] initWithRootViewController:welcomeViewController];
    [self.window addSubview: [appNavigationController view]];
    [self.window makeKeyAndVisible];
    return YES;
}

Чтобы освободить память для welcomeViewController, я просто вызываю release для нее в методе dealloc.

- (void)dealloc {
    [welcomeViewController release];
    [window release];
    [super dealloc];
}

Мой вопрос: как правильно управлять памятью appNavigationController?

Ответы [ 2 ]

1 голос
/ 12 декабря 2010

Вам нужно освободить его в методе dealloc, как вы сейчас выпускаете welcomeViewController.

(Кстати, вы должны выпустить welcomeViewController сразу после того, как использовали его для инициализации контроллера навигации (то есть: в вашем методе init), поскольку навигационный контроллер сохранит его.)

1 голос
/ 12 декабря 2010

Вы должны сделать appNavigationController переменной экземпляра и release в dealloc.

Вам не нужно иметь welcomeViewController в качестве переменной экземпляра, как раз наоборот. Просто выделите / инициализируйте его, затем передайте его UINavigationController, который затем сохранит его, а затем сразу release.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...