Ho riscontrato un problema molto strano e mi chiedevo se qualcuno potesse aiutarmi qui da quando sono completamente perso.Problema di prestazioni di auto-download per iOS in modalità verticale. [NSISEngine ottimizza]
Contesto: Sto sviluppando un'applicazione con una gerarchia relativamente semplice. Solo pochi controller di visualizzazione ma un bel po 'di immagini ad alta risoluzione. Sono presentati in un UIScrollView
con un po 'di testo, ecc. Durante il test in modalità verticale, la panoramica non scorreva affatto. Sembrava che il framerate fosse sceso a circa 4-5 fps. Per prima cosa ho pensato che fosse a causa delle immagini ad alta risoluzione.
Ma poi ho trasformato l'iPad in modalità orizzontale e tutto è andato liscio. Dal momento che ho un file xib separato per verticale e orizzontale, ho pensato che ci fosse un problema nel portrait-xib. Si è scoperto, non c'era. Entrambi avevano la stessa classe VC e quindi utilizzavano lo stesso codice e entrambi gli xib erano quasi identici tranne che per le dimensioni e le posizioni delle viste.
Per limitare il problema, ho utilizzato lo strumento TimeProfiler per vedere che cosa ha causato il problema. Come si è scoperto, TimeProfiler ha mostrato alcune chiamate a [NSISEngine optimize]
(attivato da NSLayoutConstraint
). In modalità verticale c'erano più chiamate e quelle chiamate richiedevano molto più tempo. Più in basso nell'albero l'ho visto in modalità ritratto [NSISEngine optimize]
chiamato [NSISEngine fixupIntegralizationViolations]
e in orizzontale no.
Ho persino rimosso tutti i viewcontroller dall'app tranne rootVC e uno altro presentato da rootVC. Il vc presentato contiene solo alcune immagini, pulsanti e alcune animazioni. Ha solo uno xib per entrambi gli orientamenti ed è (come tutti gli altri) disposto con l'autolayout.
Il layout funziona come dovrebbe in entrambi gli orientamenti e non ci sono ambiguità (per quanto posso dire, almeno po [[UIWindow keyWindow] _autolayoutTrace]
non ne mostra nessuno).
Ho allegato uno screenshot del TimeProfile del processo di presentazione del vc. Uno per il ritratto e uno per il paesaggio. Come puoi vedere, in orizzontale le chiamate a [NSISEngine optimize]
richiedono solo un millisecondo mentre in verticale superano i 3000 ms.
C'è qualcuno che può dirmi perché? O forse ha qualche idea su cosa posso fare per scoprire qual è il problema?
Qualsiasi aiuto sarebbe molto apprezzato!
Thx
Link a una versione più grande dell'immagine: link
solo curioso di sapere se hai mai avuto un follow-up con questo bug report? Ho avuto problemi simili con strani ritardi di autolayout, con strumenti che mostravano molte chiamate a NSISEngine fixUpIntegralizationViolations ... –
No, purtroppo non ho ancora sentito nulla – Tobi