我正在使用导航控制器处理应用。 Swift + Objective C
重要提示: 在iPhone 5c上进行测试时,此冻结发生率为100%,而在iPhone 6s上进行测试时则不会发生此冻结
场景是:
答案 0 :(得分:1)
经过一天的调查, 我终于发现它与MKMapView deinit相关联。
后来我发现这篇文章的主题非常相似:
WARNING: Output of vertex shader 'v_gradient' not read by fragment shader
根据 - 神 - @mojuba,他发现冻结也与deinit阶段有关,为DEBUG模式提供了修复。因为这个问题似乎只发生在DEBUG ......
我已成功将修复程序应用于我的代码,如下所示:
deinit {
#if DEBUG
// Xcode8/iOS10 MKMapView bug workaround
if let mV = locationPickerView.mapView {
VControllerB.unusedObjects.append(mV) // addObject:_mapView];
}
#endif
}
请注意,这会产生内存泄漏,因为mapView永远不会被释放并保存在VControllerB类的静态数组中。
注2:我在1月27日使用Xcode 8.2.1时报告了Apple Bug Reporter中的错误。
答案 1 :(得分:0)
这是一个僵局。看起来你在主线程上使用dispatch_sync。 解决问题 - 检查其他线程。在某些线程中,您将找到调度块结束时正在等待的代码...