Sono bloccato con un problema molto strano. Spero che molti di voi possano fornirmi suggerimenti per risolvere questo problema. La mia applicazione si interrompe abbastanza spesso, ma non sono in grado di ottenere lo scenario esatto.Reg: livello di modifica in corso di completamento ....... [Frame CALayer]: messaggio inviato all'istanza deallocato 0xe43c520
In Log ottengo seguente
2011-02-10 16:22:12.914 RCA-iOS[4132:8327] modifying layer that is being finalized - 0xe43c520
2011-02-10 16:22:13.253 RCA-iOS[4132:207] modifying layer that is being finalized - 0xe43c520
2011-02-10 16:22:13.270 RCA-iOS[4132:207] modifying layer that is being finalized - 0xe43c520
2011-02-10 16:22:13.270 RCA-iOS[4132:207] modifying layer that is being finalized - 0xe43c520
2011-02-10 16:22:13.272 RCA-iOS[4132:207] *** -[CALayer frame]: message sent to deallocated instance 0xe43c520
seguente è il mio Analisi dello stack. Si interrompe nella filettatura principale
#0 0x01978057 in ___forwarding___
#1 0x01a07b42 in __forwarding_prep_1___
#2 0x003c196a in -[UIView(Geometry) frame]
#3 0x003f5ff4 in -[UINavigationBar _getTitleViewFrame:leftViewFrame:rightViewFrame:forViews:forItemAtIndex:]
#4 0x003e5cab in -[UINavigationBar _getTitleViewFrame:leftViewFrame:rightViewFrame:forViews:]
#5 0x003f0c06 in __-[UINavigationBar layoutSubviews]_block_invoke_1
#6 0x003bdb5c in +[UIView(Animation) _performWithoutAnimation:]
#7 0x003f76bb in -[UINavigationBar layoutSubviews]
#8 0x00f59451 in -[CALayer layoutSublayers]
#9 0x00f5917c in CALayerLayoutIfNeeded
#10 0x00f5237c in CA::Context::commit_transaction
#11 0x00f520d0 in CA::Transaction::commit
#12 0x00f827d5 in CA::Transaction::observer_callback
#13 0x019e7fbb in __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__
#14 0x0197d0e7 in __CFRunLoopDoObservers
#15 0x01945bd7 in __CFRunLoopRun
#16 0x01945240 in CFRunLoopRunSpecific
#17 0x01945161 in CFRunLoopRunInMode
#18 0x02129268 in GSEventRunModal
#19 0x0212932d in GSEventRun
#20 0x0039e42e in UIApplicationMain
#21 0x00001fd0 in main at main.m:14
E di seguito è l'uscita dello strumento per oggetto NSZombie. Ciò indica UIKit
# Category Event Type RefCt Timestamp Address Size Responsible Library Responsible Caller
0 CALayer Malloc 1 25304068864 0x10837840 48 UIKit -[UIView _createLayerWithFrame:]
1 CALayer Zombie -1 99780847872 0x10837840 0 UIKit -[UIView(Geometry) frame]
Nulla indica il codice. Qualcuno ha affrontato questo tipo di problema? Se si, per favore fatemelo sapere dopo
1) Quando viene visualizzato il problema di "Modifica del livello in fase di completamento"?
2) È dovuto al livello di UIView? Ad esempio (view.layer.cornerRadius)?
3) Stack Trace punta a UINAvigationBar, c'è un modo per sovrascrivere i metodi e provare qualche cosa?
Qualsiasi aiuto è apprezzato. Grazie
Grazie Brad per la risposta. Sto ottenendo questo problema in un momento casuale come una volta ogni 30 ore. Ancora non sono in grado di risolverlo poiché è diventato molto difficile riprodurre lo scenario del bug per me. Il threading può essere un problema, dal momento che sto usando molti thread asincroni nell'applicazione? – D25
@MegaMind - Sì, il threading potrebbe essere un'ottima fonte di problemi come questo. Assicurati di non aggiornare gli elementi dell'interfaccia utente su alcunché tranne il thread principale, o anche di provocare azioni che potrebbero indirettamente portare a una modifica dell'interfaccia utente su un thread in background. Inoltre, sii molto attento con la gestione della memoria attraverso i thread, perché c'è la possibilità che tu stia casualmente rilasciando qualcosa nel momento sbagliato qui. –
Yup era un problema di threading. – D25