2011-12-20 7 views
1

今日私は、私が取り組んでいるアプリで奇妙なバグを発見しました。 カタログモジュールで問題が発生しました。各ページの上には、ページが画面の100%を満たしていないため、小さな黒い領域がありました。そのゾーンをタップするとクラッシュが発生します。 CALayerに関連した奇妙なクラッシュログ

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Codes: KERN_PROTECTION_FAILURE at 0x2fd00fec 
Crashed Thread: 0 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 QuartzCore      0x35d812ac CA::Transaction::ensure_compat() + 0 
1 QuartzCore      0x35da2648 CALayerMapGeometry_(CALayer*, CALayer*, void (*)(void*, CA::Mat4<double> const&), void (*)(void*, CA::Mat4<double> const&), void*) + 28 
2 QuartzCore      0x35da25f8 -[CALayer convertPoint:fromLayer:] + 52 
3 UIKit       0x32457018 -[UIView(Geometry) convertPoint:fromView:] + 68 
4 UIKit       0x32456d40 -[UIView(Geometry) hitTest:withEvent:] + 172 
5 UIKit       0x32456d50 -[UIView(Geometry) hitTest:withEvent:] + 188 
(...)repeat the line above^ until it reached 511 
511 UIKit       0x32456d50 -[UIView(Geometry) hitTest:withEvent:] + 188 

はさらに、Xcodeのはすぐ後にクラッシュ終了:

私のクラッシュログは次のようになります。 デバッグナビゲーターは私にもっと奇妙なものを示しています。http://i43.tinypic.com/5txnq0.pngをして、ここのように、膨大なリストを続け: ...そもそもどこ私は本当に知らないhttp://i41.tinypic.com/2h81ctw.png

カタログモジュールが古い、よくこのようなことは以前に起こったことはありませんでした。 アプリに影響する可能性のある変数や事柄がたくさんあることは知っていますが、誰かがこれに少しでも光を当てることができれば、本当に感謝しています 私が言ったように、私はこの方法問題は、通常の「割り当て解除されたオブジェクトへのアクセス」、「メモリリーク」、またはこれまでに遭遇したその他の問題のようには見えません。

答えて

10

あなたはどこかで無限の再帰を持っています。どこかで-[UIView hitTest:withEvent:]を上書きしましたか?それは始めるのに良い場所になるでしょう。

+1

ここで何がうまくいかないのかをより正確に説明すると、無限の再帰がありますが、間違った方法で上書きすると、この正確な動作が見られます。あなたが ''スーパーなもの ''を必要としたときに、あなたが '' [何か] ''を使わなかったことを確認してください。 –

+0

そうです、再帰はより適切です...修正されました。 –

+0

いいえ、「hitTest:withEvent」はアプリ内のどこでも使用されていませんが、チェックする必要があるCALayerのインスタンスがいくつかあります。無限の再帰が妥当であると思われる場合は、最初にアプリ内のすべての繰り返しを確認します。 sugestions、みんなありがとう! – BBog