Pourquoi initWithRootViewController ne conserve-t-il pas la classe viewController qui lui est transmise?

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

  •  20-08-2019
  •  | 
  •  

Question

J'ai un viewController personnalisé appelé SourceListViewController et je l'ajoute à un UINavigationController, dont la vue est ensuite ajoutée à la fenêtre de l'application iphone. Après avoir passé le SourceListViewController à UINavigationController, je libère le sourceListViewController.

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

Dans ce cas, l'application se bloquerait une fois la vue chargée dans le téléphone. Lorsque j'ai commenté la dernière ligne, l'application fonctionne bien. InitWithRootViewController n'est-il pas censé conserver la copie de sourceListVC?

Était-ce utile?

La solution

Vous libérez automatiquement navigationController. Donc, si navigationController est autoreleased (ce qui se passera probablement dans le prochain runloop), sourceListVC le sera aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top