2010-11-03 4 views
0

J'ai une application iPad qui a une navigation linéaire avec un contrôleur de navigation. Je pousse les contrôleurs de vue un à la fois avec des gestes. J'ai aussi un menu PopOverController qui peut pousser View Controllers. Le problème est, quand je pousse plus de 20 il se bloque. Dois-je supprimer manuellement les contrôleurs de vue de la pile après avoir dépassé un certain nombre? J'avais l'impression que le contrôleur de navigation supprimerait automatiquement les contrôleurs de vue cachés.Navigation Controller - application se bloque après 20 vues poussées

Merci beaucoup à l'avance.

+0

Il y aura quelque chose d'autre qui ne va pas dans votre implémentation quelque part, vous ne libérez pas suffisamment d'objets et n'utilisez pas de mémoire ou vous faites quelque chose d'autre qui cause un problème. Ce ne sera pas du tout le contrôleur de navigation. Vous pouvez être hors-jeu d'un tableau ou quelque chose de similaire. Quel message d'erreur obtenez-vous dans la console? –

+0

L'erreur que j'obtiens est: 2010-11-03 12: 02: 27.810 EliteDemo [504: 207] Avertissement de mémoire reçue. Level = 1 De plus, DidReceiveMemoryWarning est soudainement invoqué dans tous les ViewControllers actuels. – intomo

+1

Vous devez répondre à ces avertissements dans tous vos contrôleurs de vue et libérer autant de mémoire que possible. – Rengers

Répondre

1

Si vous allouez trop de mémoire, utilisez viewDidUnload pour libérer des objets que vous n'utiliserez pas tant que la vue ne sera pas présentée à nouveau. Vous pouvez également restaurer dans viewDidLoad.

+0

Donc, fondamentalement, tous les objets que je libère dans le dealloc que je publie dans viewDidUnload? – intomo

+0

Je l'ai fait et le crash s'est arrêté. – intomo

0

Essayez de libérer tous les contrôleurs après les avoir poussés sur la pile et essayez également de relâcher le contrôleur de navigation. J'espère que cela aidera

+0

Merci. Je libère déjà le contrôleur. Donc vous suggérez ce qui suit? – intomo

+0

SlidesViewController * svController = [[SlidesViewController alloc] initWithNibName: @ Groupe "SlidesView": [NSBundle mainBundle]]; \t \t \t \t [svController setCurrentLevel: [self currentLevel] + 1]; \t \t [[self model] setSlideNum: [self currentLevel] + 1]; \t \t [svController setRole: [self role]]; \t \t [[auto navigationController] pushViewController: svContrôleur animé: OUI]; \t \t \t \t [version de svController], svController = nil; \t \t [[auto navigationController]]; – intomo

+0

[[auto navigationController]]; Ça rend fou. – intomo

Questions connexes