Xcode 9模拟器中MKMapView响应异常缓慢问题求助
嘿,我之前在旧版本Xcode搭配老系统的模拟器上也碰到过几乎一模一样的情况,那种等15秒才能缩放的体验真的太糟了!给你几个亲测有效的解决方案,你可以挨个试试:
关掉模拟器的模拟定位功能
有时候持续的模拟定位会让MKMapView一直在后台处理位置相关的计算,吃掉大量资源。你可以点击模拟器顶部的Debug > Location,把它改成None,然后重启模拟器再跑项目,这个操作很多时候能直接解决缩放卡顿的问题。降低地图的渲染类型
卫星图的渲染对模拟器的压力特别大,尤其是你这套比较老的软件组合。在Storyboard里选中你的MKMapView,打开右侧的Attributes Inspector,把Rendering Mode改成Standard或者Hybrid;或者在代码里手动设置:self.mapView.mapType = MKMapTypeStandard;清理Xcode缓存和模拟器数据
堆积的旧缓存和模拟器残留数据很容易拖慢性能:- 先关掉Xcode,找到
~/Library/Developer/Xcode/DerivedData文件夹,把里面的内容全删掉 - 打开模拟器,点击
Hardware > Erase All Content and Settings重置模拟器 - 重启你的Mac,再重新运行项目
- 先关掉Xcode,找到
检查MapView的代理方法有没有耗时操作
如果你已经实现了mapViewDidFinishRenderingMap:,再看看其他代理方法比如mapView:regionWillChangeAnimated:或者mapView:regionDidChangeAnimated:里有没有做大量标注加载、复杂计算这类耗时的事,这些都会导致缩放时的延迟。如果可行,考虑升级系统和Xcode版本
High Sierra和Xcode 9确实有点年头了,苹果在后续版本里对MapKit和模拟器的性能做了不少优化,如果你的Mac支持的话,升级到较新的macOS和Xcode版本能从根本上改善这个问题。
另外提一句:模拟器本身的图形渲染性能就比真机差不少,你可以先在真机上测试一下,如果真机没有这个问题,那基本就是旧版本模拟器+老系统的性能瓶颈导致的啦。
内容的提问来源于stack exchange,提问作者m4rch

