我使用addOverlay和rendererForOverlay与MKMapView有一个MapKit问题。正在使用Xcode 9.1(9B55)在设备(iPhone 7 iOS 11.1.1)上进行测试和调试。正在为地图视图中的所有切片重复刷新叠加渲染器(每秒2500次调用以绘制MapRect :)。对渲染器的调用忽略setNeedsDisplayInMapRect中更改的矩形:并且不是由setNeedsDisplayInMapRect启动的。即使在使用Xcode报告应用程序使用超过160%的CPU完成所有地图更新之后,这种刷新仍将永远持续。
Xcode Debug Navigator Image Link
MKMapView代码基于https://developer.apple.com/library/content/samplecode/Breadcrumb/Introduction/Intro.html提供的Apple示例代码'BreadCrumb'。此代码没有重大的结构更改。 有没有其他人经历过这个或者有什么建议从哪里开始寻找解决方案?
答案 0 :(得分:1)
运行Apple Breadcrumb样本没有出现同样的问题。把它放回我的项目并从我的项目中添加更改后,我终于能够将问题分离为将'self.alpha = 0.5'插入到drawMapRect:中。无论alpha属性是设置为1.0还是其他值都没关系,问题仍然会发生。
- (void)drawMapRect:(MKMapRect)mapRect
zoomScale:(MKZoomScale)zoomScale
inContext:(CGContextRef)context;
{
CrumbPath *crumbs = (CrumbPath *)(self.overlay);
self.alpha = 0.5; // <-------- THE PROBLEM
解决了问题后,叠加渲染器调用恢复到每秒40到80之间,没有地图更新和调用setNeedsDisplayInMapRect时没有调用:。