Perché initWithRootViewController non mantiene la classe viewController che vi viene passata?
-
20-08-2019 - |
Domanda
Ho un viewController personalizzato chiamato SourceListViewController e lo sto aggiungendo in un UINavigationController, la cui vista viene quindi aggiunta alla finestra dell'app per iPhone. Dopo aver passato SourceListViewController a UINavigationController, rilascio sourceListViewController.
SourceListViewController *sourceListVC = [[SourceListViewController alloc] initWithNibName:@"SourceListViewController" bundle:nil];
UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:sourceListVC] autorelease];
[sourceListVC release];
Quando lo faccio, l'app si arresta in modo anomalo dopo che la vista viene caricata sul telefono. Quando ho commentato l'ultima riga, l'app funziona bene. InitWithRootViewController non dovrebbe conservare la copia di sourceListVC?
Soluzione
Rilasci di navigazione con controllo automatico. Quindi, se navigationController viene rilasciato automaticamente (cosa che probabilmente accadrà nel prossimo runloop), allora anche SourceListVC.