1

アプリケーションで奇妙なクラッシュが発生しましたまず、アプリケーションについて一目見てみましょう。多くの注釈を含むマップがあり、これらの注釈のコールアウトをボタンと多くの情報を含むビューにカスタマイズしました、アプリケーションの別のタブに移動するアクションを持つボタンが含まれています。これはDisclosureButtonと呼ばれます。 地図を更新する場所

DisclosureButtonのアクション

プロジェクトにブレークポイント例外を追加したので、アプリがクラッシュした場所を取得しました。上記の173行目で確認できます。上記のコンソールで確認できるように、view.annotationはnullであるため、ある時点でアノテーションが削除されました。スレッド1(メインスレッド、以下で確認できます)によって実行されたアクションを確認した後、マップから注釈を削除しているときに、開示ボタンのアクションが実行されていることがわかります。メインスレッドがupdateMapメソッドの実行を停止し、開示ボタンのアクションを開始するのはなぜですか?これが、コンソールが最初に「注釈を削除する前」に表示し、次に「注釈を作成する前」にログを記録せずに、disclosureButtonのアクション内のログを表示するものです。これは非常に奇妙なことです。この時点で何が起こっているのかわかりません。 mainThreadのstackTrace

何が起こっているのかわかりません。提案/コメント/支援をいただければ幸いです。

前もって感謝します、

4

2 に答える 2

1

iOS 6 は、マップ内の注釈を爆破するのが好きです。その理由は誰にもわかりません。私の解決策は、所有するクラスに注釈を保持し、メモリを処理することです。今のところ機能していますが、ネイティブの mapKit で処理できません...見るべき新しい WWDC ビデオがあるかどうか、または MKMap プログラミング ドキュメントに追加されたページがあるかどうかはわかりませんが、今のところこれで機能します。

于 2012-09-28T22:04:10.513 に答える
0

私も同じ問題を抱えていたと思います。バックグラウンドスレッドが注釈を追加/削除していましたが、注釈のボタンがメインスレッドに追加されます。これは、メインスレッドが注釈に対して列挙を行うことも意味します(何らかの理由で)。メインスレッドで追加して修正しました。

問題はiOS6にのみ存在します。

あなたの例外が何であったかはわかりませんが、私の例外は次のとおりです。

*コレクション<__NSArrayM:0x136d57c0>は、列挙中に変更されました。

0   CoreFoundation                      0x0330e02e __exceptionPreprocess + 206
1   libobjc.A.dylib                     0x02735e7e objc_exception_throw + 44
2   CoreFoundation                      0x03396cc5 __NSFastEnumerationMutationHandler + 165
3   MapKit                              0x0231748c -[MKAnnotationContainerView _updateAnnotationViewPerspective] + 399
4   MapKit                              0x02305520 -[MKMapView _updateScrollContainerView:] + 2478
5   MapKit                              0x02303e10 -[MKMapView _didChangeRegionMidstream:] + 97
6   MapKit                              0x02305d66 -[MKMapView _goToMapRegion:duration:animationType:] + 828
7   MapKit                              0x023061bd -[MKMapView _setZoomScale:centerMapPoint:duration:animationType:] + 711
8   MapKit                              0x02305a24 -[MKMapView _setZoomScale:centerCoordinate:duration:animationType:] + 121
9   MapKit                              0x02307f8f -[MKMapView _goToCenterCoordinate:zoomLevel:animationType:cancelDefaultLocationTimer:] + 950
10  MapKit                              0x023075fb -[MKMapView goToCenterCoordinate:zoomLevel:animationType:] + 81
11  MapKit                              0x023076c9 -[MKMapView goToCenterCoordinate:longLatSpan:animationType:] + 178
12  MapKit                              0x0230992a -[MKMapView goToDefaultLocation] + 415
13  Foundation                          0x009a0b90 __NSFireTimer + 97
14  CoreFoundation                      0x032cd376 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 22
15  CoreFoundation                      0x032cce06 __CFRunLoopDoTimer + 534
16  CoreFoundation                      0x032b4a82 __CFRunLoopRun + 1810
17  CoreFoundation                      0x032b3f44 CFRunLoopRunSpecific + 276
18  CoreFoundation                      0x032b3e1b CFRunLoopRunInMode + 123
19  GraphicsServices                    0x03c557e3 GSEventRunModal + 88
20  GraphicsServices                    0x03c55668 GSEventRun + 104
21  UIKit                               0x00d3465c UIApplicationMain + 1211
22  myApp                               0x00002c93 myApp + 7315
23  myApp                               0x00002bd5 myApp + 7125
于 2012-09-20T12:01:31.350 に答える