drawMapRect:zoomScale:inContext: 应该多久调用一次?

How often is drawMapRect:zoomScale:inContext: supposed to be called?

我有一个自定义 MKOverlayRenderer。在第一次区域更改后(当它从默认位置移动到用户位置时),我将 MKOverlay(也是自定义的)添加到 MKMapView。渲染速度很慢,所以我记录了函数调用。

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难道要这样重复调用吗?

Is drawMapRect:zoomScale:inContext supposed to be called repeatedly like this?

是的。可见地图由图块组成。 drawMapRect:zoomScale:inContext: 为每个图块调用一次(如果您的实现实际上查看了传入的 rect 参数,您就会知道)。