いくつかのオーバーレイを表示するアプリをビルドしました。オーバーレイは、外側リングに10000ポイントまでのポリゴンの形式です。しかし、ここで問題点は少ないようです。ここ数日、私はMapViewを含む単純なViewで自分自身を見つけるためにアプリを単純化し続けました。ビューはxibからロードされます(アウトレットとデリゲートが接続されています)。オーバーレイはメソッド内に作成されます。 - (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)はアニメーション化され、mapViewに追加されます。iOS 5 MapKitがズーム/パン時にオーバーレイでクラッシュする
デモンストレーション(ここではhttps://github.com/nebucaz/mapkitにあります)では、MapViewが表示され、地図がズームイン/アウトまたはパンされるたびに赤い三角形が追加されます。 MapViewをズームしたりパンしたり(集中的かつ高速)にすると、アプリがクラッシュします。シミュレータをチャールズするのは簡単ですが、デバイス上では可能ですが(クラッシュログを提供することは可能ですが)、はるかに難しいです。
MapCrashとMapCrashStaticという2つのデモがあります。 1つ目は、パン/ズームの位置に応じてマップの周りに複数のポリゴンを作成します。第二は、のみで作成された単一の、静的なポリゴンがある - (無効)のviewDidLoadをして、アプリケーションは常に次のバックトレースでクラッシュのMapView regionDidChangeAnimatedのすべての呼び出し
に追加されます。
Attaching to process 8745.
MapCrash(8745) malloc: protecting edges
[Switching to process 8745 thread 0x1820b]
[Switching to process 8745 thread 0x1820b]
(gdb) backtrace
#0 0x00000000 in ??()
#1 0x00e81a60 in CG::Path::apply_transform()
#2 0x00ed741c in CGPathCreateMutableCopyByTransformingPath()
#3 0x00f50d23 in CGContextAddPath()
#4 0x000f11dc in MKRoadWidthAtZoomScale()
#5 0x000ee498 in MKMapRectRemainder()
#6 0x000fab01 in MKTilesRequireGoogleLegalNotices()
#7 0x02723c17 in -[CALayer drawInContext:]()
#8 0x027407e3 in tiled_layer_render()
#9 0x0265b127 in CAImageProviderThread()
#10 0x01eb04e6 in _dispatch_worker_thread2()
#11 0x98f44b24 in _pthread_wqthread()
#12 0x98f466fe in start_wqthread()
(gdb)
バックトレースされます常に同じですが、ライブラリコードの同じポイントでクラッシュします。私は楽器(ゾンビ、リーク、アロケーション)を分析し、過剰に保持されたオブジェクトでいくつかのテストを行いました。私はそれが記憶上の問題であると想定しましたが、私はまだMalloc Guardを起動できませんでした。クラッシュは複数のマシン上で再現される可能性があります。私はXcodeツールを再インストールしただけです。
MapKitの突然のクラッシュにも関わらず、私の問題に直接的な解決策はありません。また、代理人やその他のビューの移行やアプリケーションの開始/停止の問題に対処しなければなりません。 ARCは私のプロジェクトではオフです。私はまだ私はKMLViewerデモを誤解と仮定して、今一週間以上もこのクラッシュを狩る
- Navigation and MapKit makes app crash
- IOS - Mapkit crash - Is it a bug in xcode 4.2 and Automatic Reference Counting (ARC)?
- MKMapView crash(注釈)
- I need help with a MKMapView crash(委任) (アップル)または間違ったやり方をしている(私の近所の他のiOS開発者のクレジット)
それにもかかわらず、私はあなたの提案に感謝し、この問題に協力します。
ちょうど私の価値の数セントでチャイムするには、私は現在、まったく同じ問題を抱えています。私は、MKOverlayプロトコルをサポートするオブジェクトのリストを含むNSMutableArrayを持っています。可変配列内のオブジェクトが削除されると、マップビューからも削除されます。しかし、繰り返しズームすると、次のスタックトレースが発生します。 – Diziet
'アドレス0x1のメモリにアクセスできない (gdb) #0 0x00000001 in ?? () #CGPathCreateMutableCopyByTransformingPath()で1 0x011a741c #CGContextAddPath() #2 0x01220d23 MKMapRectRemainder() #3 0x003be3e1 MKMapRectRemainder() #MKTilesRequireGoogleLegalNotices 5 0x003cab01() #6 0x029f3c17で4 0x003be498 - [CALayerのdrawInContext:() #tiled_layer_render 7 0x02a107e3() #CAImageProviderThread() #8 0x0292b127 _dispatch_worker_thread2 9 0x021804e6() _pthread_wqthread位10 0x9c981b24()start_wqthreadで #11 0x9c9836fe() ' – Diziet
おかげ@ Dizietを共有する。私は先週Apple Developer NetworkでTSIを開き、バグを提出するように求められました。私はこの時点で利用可能な回避策はなく、バグが調査されると言われました。私は進捗状況についてのさらなるコメントを投稿します。 – Snel