Ho un'app nell'app store con quasi 5 stelle, ma quando iOS 6 è uscito, alcune delle visualizzazioni nella gerarchia della vista principale dell'app hanno iniziato a lampeggiare. Questo accade nell'app che si trovava nel negozio (l'ho rimosso quando è uscito iOS6) e nel simulatore.iOS 6 view hierarchia incubo
Ho trascorso circa 14 ore, provando 100 cose, per eseguire il debug di questo in Xcode, ma non posso ottenere alcuna trazione su di esso. Le sottoview scompaiono e riappaiono come se un gremlin impostasse casualmente la proprietà visibile su ciascuna di esse fino a 10 volte al secondo, tra periodi più lunghi in cui tutto è normale.
L'interfaccia principale è un quadrante che l'utente può ruotare, dove io uso le trasformazioni 3d su un livello per ruotarlo. L'unico modello che ho trovato è che 3 delle 4 sottoview scompariranno insieme, come se fossero bloccate come una sola, quando il quadrante è ruotato in certe posizioni discrete.
La sottoview 4a scomparsa dovrebbe essere un'immagine statica e lampeggia e non lampeggia.
Mi piacerebbe qualche idea, consigli su come posso eseguire il debug di questo. Non è un avviso di memoria, e l'esecuzione di ulteriori [setNeedsToDisplay] sembra non avere alcun effetto. Sto iniziando a pensare che Apple abbia rotto qualcosa in iOS6, ma non riesco a trovare nessun altro a parlare di questi problemi.
Qui è una ripartizione di gerarchia di subviews e CALayers della vista principale:
- mio gerarchia contiene 2 CALayers di base che vanno bene.
- Sopra ci sono un UIView personalizzato molto grande (usa drawRect) e un UIImageVIew grande di tipo che lampeggiano insieme, sempre, quando il fondo viene ruotato in determinate posizioni. Solo quello inferiore è ruotato.
- Sopra questo è un disegno di testo personalizzato UIView che non lampeggia.
- Sopra questo è un UIImageView di un piccolo pin rosso grafico che lampeggia a la stessa ora esatta delle 2 viste precedenti. Questa è una vaniglia UIImageView; nessuna trasformazione o sottoclasse o codice di disegno personalizzato! E ha ancora lo stesso lampeggiare.
- Sopra questo è un UIButton invisibile che sembra funzionare sempre.
- Sopra che è un UIImageView che è un piccolo grafico che lampeggia fuori e costantemente, non correlato al lampeggio di rotazione a base dei altri 3 strati "legati" (dico linkato perché a loro piace a scomparire tutti insieme) .
Forse si tenta di aggiungere alcuni messaggi di log sovrascrivendo i setter di 'isHidden', metodi' alpha' e strati cambiando l'ordine? Apple ha apportato alcune modifiche a UIKit, è vero, ma ciò non significa che tu non sia il responsabile del problema. Come avevano un avvertimento 'UITouch.h' dicendo' Le variabili di istanza di una classe UIKit dovrebbero essere considerati privati ... 'e indovinate un po ', i vars non sono pubbliche a iOS6 più. –
Ho fatto quello che avete suggerito e le sostituzioni aggiunto per setHidden: e setAlpha: sul mio UIView sottoclasse che aveva problemi e impostare un punto di interruzione su ogni - non hanno mai stato colpito. Non sei sicuro di cosa intendi a proposito delle modifiche di UIKit. – avance