gpt4 book ai didi

ios - 应用程序在 iPhone 5c 的主线程上卡住,但在 iPhone 6s 上没有

转载 作者:行者123 更新时间:2023-11-28 06:26:02 25 4
gpt4 key购买 nike

我正在开发一个带有导航 Controller 的应用程序。Swift + Objective-C

重要提示:这种卡住在 iPhone 5c 上测试时 100% 发生,在 iPhone 6s 上测试时从未发生过

场景是:

  1. 转到 TableViewController A
  2. 触摸列表中的一项以到达 TableViewController B
  3. 按左上箭头返回 TVController A
  4. 应用程序显示 TableViewController A 但立即卡住

UI 已卡住,但应用程序仍在运行。如果我按下暂停按钮( Debug模式),我可以看到线程 1(主线程)堆栈是:

0 semaphore_wait_trap
45 UIApplicationMain
46 main
47 start

我不知道从哪里开始调查才能找到问题所在。

Stack on main thread

有什么想法吗?

最佳答案

经过一天的研究,我终于发现它与 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 中报告了该错误。

关于ios - 应用程序在 iPhone 5c 的主线程上卡住,但在 iPhone 6s 上没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41869703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com