¿Por qué initWithRootViewController no retiene la clase viewController que se le pasa?

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

  •  20-08-2019
  •  | 
  •  

Pregunta

Tengo un viewController personalizado llamado SourceListViewController, y lo estoy agregando a un UINavigationController, cuya vista se agrega a la ventana de la aplicación de iPhone. Después de pasar SourceListViewController a UINavigationController, libero sourceListViewController.

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

Cuando hago esto, la aplicación se bloquea después de cargar la vista en el teléfono. Cuando comenté la última línea, la aplicación funciona bien. ¿No se supone que initWithRootViewController retiene la copia de sourceListVC?

¿Fue útil?

Solución

Usted es autorreleasing navigationController. Entonces, si navigationController se libera automáticamente (lo que probablemente sucederá en el próximo runloop), también lo hará sourceListVC.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top