私はカスタムMKOverlayRendererを持っています。最初の領域が変更された後(デフォルトの場所からユーザーの場所に移動するとき)、MKMapViewにMKOverlay(カスタム)も追加します。レンダリング速度はかなり遅かったので、関数呼び出しを記録しました。drawMapRectの頻度:zoomScale:inContext:呼び出されるはずですか?
2016-07-20 14:03:21.486 MyApp[360:38679] mapView:regionDidChangeAnimated:
2016-07-20 14:03:22.351 MyApp[360:38679] addOverlay:level:
2016-07-20 14:03:22.353 MyApp[360:38679] mapView:rendererForOverlay:
2016-07-20 14:03:22.460 MyApp[360:38709] drawMapRect:zoomScale:inContext:
2016-07-20 14:03:22.460 MyApp[360:38706] drawMapRect:zoomScale:inContext:
2016-07-20 14:03:22.501 MyApp[360:38709] drawMapRect:zoomScale:inContext:
2016-07-20 14:03:22.504 MyApp[360:38706] drawMapRect:zoomScale:inContext:
2016-07-20 14:03:22.504 MyApp[360:38707] drawMapRect:zoomScale:inContext:
2016-07-20 14:03:22.560 MyApp[360:38707] drawMapRect:zoomScale:inContext:
2016-07-20 14:03:22.562 MyApp[360:38709] drawMapRect:zoomScale:inContext:
2016-07-20 14:03:22.582 MyApp[360:38713] drawMapRect:zoomScale:inContext:
これはデバイスには触れていません。 drawMapRect:zoomScale:inContextはこのように繰り返し呼び出されるはずですか?
@mattこれは典型的ではないと確信していますか?私のアプリケーションには、HTTP要求が返ってから二次スレッドで実行される少量のコードがありますが、すべてのGUI関連は 'dispatch_async(dispatch_get_main_queue()、^ {}) 'ブロック内にあります。 – DaiBu
確かに、私は間違っている可能性があります。 「遅れ」はどこかにある可能性があります。インストゥルメントを使って確認することができます。 – matt
@mattあなたは答えたのと同じ男です。笑。ええ、私は、OSがそれ自身の上で複数のスレッドを使用していると思います。私は関数によって提供されたMKMapRectにレンダリングをクリップしましたが、今は速いです。私はオーバーレイをカスタマイズする方法を学ぶのに最後の4-6時間を後悔し始めました。今はそれが払いのけます。ありがとう。 – DaiBu