Por initWithRootViewController não retém a classe viewController que é passado para ele?

StackOverflow https://stackoverflow.com/questions/1054993

  •  20-08-2019
  •  | 
  •  

Pergunta

Eu tenho um costume viewController chamado SourceListViewController, e eu estou adicionando-o em um UINavigationController, a visão de que é então adicionado à janela do aplicativo para iPhone. Depois de passar o SourceListViewController para UINavigationController, eu liberar o sourceListViewController.

SourceListViewController *sourceListVC = [[SourceListViewController alloc] initWithNibName:@"SourceListViewController" bundle:nil];
UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:sourceListVC] autorelease];
[sourceListVC release];

Quando eu fizer isso, o app iria falhar após a exibição é carregado no telefone. Quando eu comentou a última linha, a multa de trabalho do aplicativo. não é initWithRootViewController suposto reter a cópia do sourceListVC?

Foi útil?

Solução

Você está autoreleasing navigationController. Então, se navigationController fica autoreleased (que provavelmente vai acontecer no próximo RunLoop), então assim será sourceListVC.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top