2017-11-13 22 views
1

addOverlayとrendererForOverlayを使用してMKMapViewでMapKitの問題が発生しました。テストとデバッグは、Xcode 9.1(9B55)のデバイス(iPhone 7 iOS 11.1.1)で実行されています。オーバーレイレンダラーは、マップビュー内のすべてのタイルに対して繰り返しリフレッシュされます(drawMapRectには2500コール/秒)。レンダラーへの呼び出しは、setNeedsDisplayInMapRect:で変更された矩形を無視しており、setNeedsDisplayInMapRectによって開始されません。アプリが160%以上のCPUを使用しているXcodeレポートの更新がすべて終了した後も、このような爽快感は永遠に続きます。MapKit iOSレンダラーのオーバーライドが制御不能になる

Xcode Debug Navigator Image Link

MKMapViewコードがhttps://developer.apple.com/library/content/samplecode/Breadcrumb/Introduction/Intro.htmlから入手アップルのサンプルコード「ブレッドクラム」に基づいています。このコードには重大な構造上の変更はありません。 誰かがこれを経験したことがありますか、またはソリューションの検索を開始するための提案がありますか?

+2

あなたが見つけたものを共有してくれてありがとう!質問を質問にし、以下の解決策を回答として投稿してください。それは[あなた自身の質問に答えることができます](https://meta.stackexchange.com/a/132887/159251)ですが、フォーマットに従う必要があります。 –

答えて

1

Apple Breadcrumbサンプルを実行しても同じ問題は発生しませんでした。これを私のプロジェクトに入れて、私のプロジェクトの変更を追加した後、私は最後に、問題を「self.alpha = 0.5」をdrawMapRect:に挿入したことを分けることができました。 alphaプロパティが1.0またはその他の値に設定されているかどうかは関係ありませんが、問題は引き続き発生します。ないコールが地図の更新なしで発生していないとsetNeedsDisplayInMapRect呼び出し毎秒40〜80に戻し、問題解決オーバーレイレンダラー呼び出しで

- (void)drawMapRect:(MKMapRect)mapRect 
      zoomScale:(MKZoomScale)zoomScale 
      inContext:(CGContextRef)context; 
{ 
    CrumbPath *crumbs = (CrumbPath *)(self.overlay); 
    self.alpha = 0.5;  // <-------- THE PROBLEM 

:.

関連する問題