4

クラッシュのコメントを受け取りましたが、アプリがクラッシュすることはありません。

私は、私の間違いを指摘するレポートを 1 つ受け取りました。メソッド名が指定されていて、クラッシュする可能性のあるコードを調べることができたので、簡単でした。ここまでは順調ですね。

しかし、次の 2 つの点で私を困惑させます。

私には、アプリがいくつかの内部Appleライブラリでクラッシュしているように見えます.

クラッシュで私のコードからの呼び出しがないので、どこから探し始めますか?

誰かがこれらのクラッシュを理解していますか? これらをキャッチして、クラッシュ情報をさらに取得する方法はありますか? No.1:

0 CoreFoundation 0x3585f88f __exceptionPreprocess + 162
1 libobjc.A.dylib 0x37c06259 objc_exception_throw + 32
2 CoreFoundation 0x35862a9b -[NSObject doesNotRecognizeSelector:] + 174
3 CoreFoundation 0x35861915 ___forwarding___ + 300
4 CoreFoundation 0x357bc650 _CF_forwarding_prep_0 + 48
5 UIKit 0x332f3efb -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 546
6 UIKit 0x332f2f39 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 916
7 UIKit 0x332f2763 -[UITableView layoutSubviews] + 206
8 UIKit 0x33296f37 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 182
9 CoreFoundation 0x357be1fb -[NSObject performSelector:withObject:] + 42
10 QuartzCore 0x3268eaa5 -[CALayer layoutSublayers] + 216
11 QuartzCore 0x3268e6bd _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 216
12 QuartzCore 0x32692843 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 226
13 QuartzCore 0x3269257f _ZN2CA11Transaction6commitEv + 314
14 QuartzCore 0x326ba911 _ZN2CA11Transaction5flushEv + 44
15 QuartzCore 0x326ba8e3 +[CATransaction flush] + 34
16 UIKit 0x332a1fb1 _afterCACommitHandler + 52
17 CoreFoundation 0x35833b1b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18
18 CoreFoundation 0x35831d57 __CFRunLoopDoObservers + 258
19 CoreFoundation 0x358320b1 __CFRunLoopRun + 760
20 CoreFoundation 0x357b54a5 CFRunLoopRunSpecific + 300
21 CoreFoundation 0x357b536d CFRunLoopRunInMode + 104
22 GraphicsServices 0x37451439 GSEventRunModal + 136
23 UIKit 0x332c1cd5 UIApplicationMain + 1080
24 Wohnungssuche 0x000d5218 start + 40

2号:

Thread: Unknown Name (Crashed)
0     libobjc.A.dylib                       0x35beb5d0 objc_msgSend + 16 + 15
1     UIKit                                 0x39fb0541 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 409 + 408
2     UIKit                                 0x39f95361 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1317 + 1316
3     UIKit                                 0x39fac7ff -[UITableView layoutSubviews] + 207 + 206
4     UIKit                                 0x39f68897 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 259 + 258
5     QuartzCore                            0x34ab74eb -[CALayer layoutSublayers] + 215 + 214
6     QuartzCore                            0x34ab708d _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 461 + 460
7     QuartzCore                            0x34ab7fb1 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 17 + 16
8     QuartzCore                            0x34ab799b _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 239 + 238
9     QuartzCore                            0x34ab77ad _ZN2CA11Transaction6commitEv + 317 + 316
10   QuartzCore                             0x34aee7df _ZN2CA7Display11DisplayLink8dispatchEyy + 255 + 254
11   QuartzCore                             0x34aee6d9 _ZN2CA7Display16IOMFBDisplayLink8callbackEP21__IOMobileFramebufferyyyPv + 65 + 64
12   IOMobileFramebuffer                    0x375f0fd7 IOMobileFramebufferVsyncNotifyFunc + 155 + 154
13   IOKit                                  0x3282a5ad IODispatchCalloutFromCFMessage + 193 + 192
14   CoreFoundation                         0x3918288b __CFMachPortPerform + 119 + 118
15   CoreFoundation                         0x3918d3e7 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 35 + 34
16   CoreFoundation                         0x3918d38b __CFRunLoopDoSource1 + 139 + 138
17   CoreFoundation                         0x3918c20f __CFRunLoopRun + 1383 + 1382
18   CoreFoundation                         0x390ff23d CFRunLoopRunSpecific + 357 + 356
19   CoreFoundation                         0x390ff0c9 CFRunLoopRunInMode + 105 + 104
20   GraphicsServices                       0x3344933b GSEventRunModal + 75 + 74
21   UIKit                                  0x39fb9291 UIApplicationMain + 1121 + 1120    

ご協力いただきありがとうございます!

4

1 に答える 1

3

どちらの場合もクラッシュ ポイントは同じです。

 UIKit 0x39fb0541 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 409 + 408

最初のケースでは、テーブル ビューは、メソッドを実装していないインスタンスでメソッドを呼び出そうとしていました。2 番目のクラッシュは、ガベージ メッセージを送信しようとしたことが原因でした。

したがって、最も可能性の高い結論は、両方のクラッシュが 1 つの問題の症状であるということです。リリースが時期尚早または過剰にリリースされているオブジェクトがあります。

特に、テーブル ビューのデータ ソースは、テーブルのリロード前またはリロード中に解放されています。

UITableView がデータ ソースのメソッドを呼び出してセルを作成しようとしていると思われます。上記のメソッドにブレークポイントを設定し、スタック トレースを調べることで、これを確認できます。私の予想が正しければ、トレースに _createPreparedCellForGlobal... メソッドが表示されます。


アプリの詳細を知らなければ、なんとも言えません。ほとんどの場合、これは画面に読み込まれるデータと、テーブル ビューの読み込みが完了する前にリクエストがキャンセルされるような操作をユーザーが行うことの間のタイミング関連の問題であり、テーブルの下からデータ ソースの割り当てが解除されます (これにより、テーブル ビューにオブジェクトへの割り当て参照 (非保持参照) があるために発生する可能性があります。

試して再現するには、次の点に注意してください。

• ネットワーク接続が遅い、または帯域幅が変動する (アプリがクライアント/サーバーの場合)

• ユーザーが操作をキャンセルする可能性があることを行う

• 更新が描画を完了するのを待たずにビュー間をすばやく移動

あなたのコメントでは、「2 つの異なる iPhone」で試していると述べています。他のデバイス タイプやさまざまなネットワーク構成で試してみてください。

于 2013-01-30T19:14:40.563 に答える