非常に奇妙な問題があります。私はあなたの多くがこれを解決するために私に情報を提供できることを願っています。 アプリケーションがかなり頻繁に中断しますが、正確なシナリオを取得できません。Reg:ファイナライズされているレイヤーを変更しています......... [CALayer frame]:解放されたインスタンスにメッセージが送信されました。0xe43c520
私は私のスタックトレースが続き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
を次取得ログイン
。メインスレッドで壊れます
#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
NSZombieオブジェクトのInstrumentの出力は次のとおりです。これは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]
コードには何も指摘されていません。誰かがこのような問題に直面していますか?はいの場合は、私に連絡してください。
1) "ファイナライズされているレイヤーの変更"の問題が解決したら、
2)UIViewのレイヤーが原因ですか?たとえば(view.layer.cornerRadius)?
3)トレースポイントがUINAvigationBarにスタックされていますが、メソッドをオーバーライドして何かを試してみる方法はありますか?
何か助けていただければ幸いです。ありがとう
返信いただきありがとうございます。私は30回に一度のようにランダムな時間にこの問題を抱えています。それでも私はバグのシナリオを再現することが非常に難しくなっているので、修正することはできません。私はアプリケーションで多くの非同期スレッドを使用しているので、スレッド化は問題になりますか? – D25
@MegaMind - はい、スレッド化は、このような問題の非常に良い原因となる可能性があります。メインスレッド以外のユーザーインターフェイス要素を更新していないこと、またはバックグラウンドスレッド上のユーザーインターフェイスの変更を間接的に引き起こす可能性のあるアクションを引き起こす可能性があることを確認してください。また、間違ったタイミングで何かを誤ってリリースしている可能性があるので、スレッド間のメモリ管理には非常に注意してください。 –
Yupはスレッドの問題でした。 – D25