Temps de chargement lent de UIViewController (avertissement ClientState lent)

Depuis que j'ai converti une ancienne application en iOS 6, j'ai commencé à recevoir le message suivant dans ma console.

WARNING: Slow defaults access for key ClientState took 0.023656 seconds, tolerance is 0.020000

Mis à part la mise à jour de mon code d'iOS 5 vers iOS 6, j'ai également basculé sur la layout automatique. J'ai couru Instruments / Time Profiler et le rootViewController dans mon appDelegate est le problème. Chaque fois que je change de controller de vue, il absorbe la majeure partie du time (que je doive instancier le controller de vue ou en réutiliser un qui existe déjà).

 window.rootViewController = myViewController; 

Je sais ce que la méthode fait superficiellement, mais je ne suis pas sûr de ce qui se passe sous les couvertures … qu'est-ce qui le ferait ralentir maintenant et que puis-je faire pour l'accélérer?

EDIT: J'ai essayé de retirer mon storyboard de la layout automatique et le problème disparaît (bien sûr, la disposition de mon interface user est en désordre). Donc, la conclusion évidente est, c'est quelque chose à propos de la layout automatique. J'ai probablement un peu less de 70 vues toutes combinées à l'écran et les différentes contraintes nécessaires pour les exposer. J'ai du mal à croire que la layout automatique est beaucoup plus lente (de ~ 80 ms avec la layout automatique désactivée à ~ 1370 ms avec la layout automatique activée).

Avoir 70 vues à l'écran sonne beaucoup! Ma proposition est de simplifier d'une certaine façon:

  • Avez-vous VRAIMENT besoin des 70 vues en même time?

  • Vérifiez si toutes les vues ont besoin d'un autolayout, supprimez-le lorsque cela est possible

  • Est-ce que certaines vues peuvent être remplacées par des charts? J'ai utilisé des vues par exemple pour les ombres, peut-être des images

Pouvez-vous split storyBoard en plusieurs plus petits, par exemple un pour la connection, les détails, le mode d'édition, etc. Une partie de la lenteur pourrait provenir du système ayant à gérer (trop) de grands storyboards.

Envisagez de créer un nouveau projet avec 2 controllers de vue et testez la vitesse de commutation. Chaque application iOS possède une window, un controller de vue racine et un controller de vue. Le problème ne risque pas d'être aussi étroit et précis que vous pourriez l'espérer. Que charge chaque controller de vue? Avez-vous inspecté le code sous-jacent? L'application délégue-t-elle quoi que ce soit lors de l'initialisation ou du changement du controller de vue racine?