应用程序背景时,使用MKMapView抛出gpus_ReturnNotPermittedKillClient错误

Spa*_*yro 5 opengl-es mkmapview ios ios6

在线进行一些调查,我注意到gpus_ReturnNotPermittedKillClient当应用程序背景化时触发OpenGL操作时会抛出.我目前正在开发一个涉及地图视图和叠加层的项目(使用Apple的Breadcrumb示例代码).这些操作是在主线程上执行的,但是当地图视图初始化或视图被推到屏幕上时,应用程序可能会变为背景.

我还使用位置服务通过GPS检索点,但除非我们在前台,否则我不会更新叠加层.

据我所知,自iOS 6以来,MKMapView现在是用OpenGL创建的吗?如果是这种情况,那么可以通过OpenGL绘制叠加层吗?这可以帮助解释为什么我一直在随机获得此错误.

我听说过的一些方法来取消所有的OpenGL操作,如调用glFinish()applicationDidEnterBackgroundapplicationWillResignActive或使用[[CCDirector sharedDirector] pause].考虑到这一点,使用MKMapView/MKOverlayView消除任何OpenGL绘图的最佳解决方案是什么?

Spa*_*yro 13

在尝试了多个解决方案之后,我意识到造成这次崩溃的原因是调整了地图视图的框架,该框架在分配地图后几秒钟被触发.状态栏下拉,地图的框架向下动画几个像素.因此,必须重新绘制地图(据说),如果此动画在后台发生,则会导致崩溃.

我现在跟踪状态栏的状态与应用程序的活动状态有关,并且仅在应用程序状态为动画时进行动画处理UIApplicationStateActive.做完这个之后,我从未发生过崩溃.