今日私は、私が取り組んでいるアプリで奇妙なバグを発見しました。 カタログモジュールで問題が発生しました。各ページの上には、ページが画面の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
カタログモジュールが古い、よくこのようなことは以前に起こったことはありませんでした。 アプリに影響する可能性のある変数や事柄がたくさんあることは知っていますが、誰かがこれに少しでも光を当てることができれば、本当に感謝しています 私が言ったように、私はこの方法問題は、通常の「割り当て解除されたオブジェクトへのアクセス」、「メモリリーク」、またはこれまでに遭遇したその他の問題のようには見えません。
ここで何がうまくいかないのかをより正確に説明すると、無限の再帰がありますが、間違った方法で上書きすると、この正確な動作が見られます。あなたが ''スーパーなもの ''を必要としたときに、あなたが '' [何か] ''を使わなかったことを確認してください。 –
そうです、再帰はより適切です...修正されました。 –
いいえ、「hitTest:withEvent」はアプリ内のどこでも使用されていませんが、チェックする必要があるCALayerのインスタンスがいくつかあります。無限の再帰が妥当であると思われる場合は、最初にアプリ内のすべての繰り返しを確認します。 sugestions、みんなありがとう! – BBog