每当有人试图编辑记录时(例如,当我显示EditRecordView控制器时),我的一个应用程序就会冻结.我try 使用Watchdog来检测挂起的主线程并导致崩溃,以获取Firebase Crashlytics报告,并追踪我导致主线程锁定的位置.

可悲的是,当我拿到看门狗的Firebase崩溃报告时,实际上每个线程都在Apple代码中运行,而不是我的代码.我看不到任何会导致我冻结/死锁的东西.

主线程似乎正在执行一些UICollectionView代码,但不是I don't even have a UICollectionView in my app.我已经整理了我的整个代码库,只是为了确保.

你知道这可能在哪里或者发生了什么吗?

我的编辑屏幕由一个UINavigationController组成,它的根视图控制器是UIViewController.UIViewController嵌入了UITableViewController.

以下是它显示的内容:


com.apple.main-thread
0  libobjc.A.dylib                0xa6d0 objc_alloc_init + 36
1  UIKitCore                      0x14e7f8 +[UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:] + 24
2  UIKitCore                      0x14e0a0 -[_UICollectionCompositionalLayoutSolver _createAndCacheLayoutAttributesForItemAtIndexPath:frame:zIndex:] + 152
3  UIKitCore                      0x13a04 __85-[_UICollectionCompositionalLayoutSolver _layoutAttributesForElementsInRect:handler:]_block_invoke + 944
4  UIKitCore                      0x6b799c __85-[_UICollectionCompositionalLayoutSolver _layoutAttributesForElementsInRect:handler:]_block_invoke_2 + 40
5  UIKitCore                      0x484278 _UIRTreeContainerNode::enumerateIndexesIntersecting(CGRect const&, bool*, void (unsigned long, bool*) block_pointer) const + 160
6  UIKitCore                      0x4842b4 _UIRTreeContainerNode::enumerateIndexesIntersecting(CGRect const&, bool*, void (unsigned long, bool*) block_pointer) const + 220
7  UIKitCore                      0x40adb0 -[_UIRTree enumerateIndexesForFramesIntersectingFrame:withBlock:] + 52
8  UIKitCore                      0x11b14 -[_UICollectionCompositionalLayoutSolver _layoutAttributesForElementsInRect:handler:] + 1092
9  UIKitCore                      0x4483a4 -[_UICollectionCompositionalLayoutSolver layoutAttributesForElementsInRect:] + 172
10 UIKitCore                      0x1321c -[UICollectionViewCompositionalLayout layoutAttributesForElementsInRect:] + 112
11 UIKitCore                      0x12840 __45-[UICollectionViewData validateLayoutInRect:]_block_invoke + 136
12 UIKitCore                      0x43ce3c -[UICollectionViewData validateLayoutInRect:] + 1252
13 UIKitCore                      0x2878c -[UICollectionView layoutSubviews] + 220
14 UIKitCore                      0x4420 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1992
15 QuartzCore                     0x9f30 CA::Layer::layout_if_needed(CA::Transaction*) + 500
16 QuartzCore                     0x1d4ac CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 148
17 QuartzCore                     0x2e8d8 CA::Context::commit_transaction(CA::Transaction*, double, double*) + 444
18 QuartzCore                     0x5de80 CA::Transaction::commit() + 648
19 UIKitCore                      0x4fd4f0 _UIApplicationFlushCATransaction + 84
20 UIKitCore                      0x64dd94 _UIUpdateSequenceRun + 84
21 UIKitCore                      0xcb2894 schedulerStepScheduledMainSection + 144
22 UIKitCore                      0xcb1df0 runloopSourceCallback + 92
23 CoreFoundation                 0xd3128 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
24 CoreFoundation                 0xdf7b4 __CFRunLoopDoSource0 + 176
25 CoreFoundation                 0x645e8 __CFRunLoopDoSources0 + 244
26 CoreFoundation                 0x7a0d4 __CFRunLoopRun + 828
27 CoreFoundation                 0x7f3ec CFRunLoopRunSpecific + 612
28 GraphicsServices               0x135c GSEventRunModal + 164
29 UIKitCore                      0x39cf58 -[UIApplication _run] + 888
30 UIKitCore                      0x39cbbc UIApplicationMain + 340
31 HerdBoss                       0xced0 main + 16 (main.m:16)
32 ???                            0x1dd1b0dec (Missing)

以下是其他帖子,供参考:

Fatal error: ? Main thread was blocked for 2.00s ?
Crashed: WatchDog
0  libswiftCore.dylib             0x373e4 _assertionFailure(_:_:file:line:flags:) + 264
1  Watchdog                       0x8328 $s8WatchdogAAC9threshold10strictModeABSd_SbtcfcyycfU_TA + 204
2  Watchdog                       0x8348 $sIeg_IeyB_TR + 28
3  Watchdog                       0x8c1c $s8Watchdog10PingThread33_F0B684E1C455B9DE2999D4562E567E94LLC4mainyyF + 816
4  Watchdog                       0x8c3c $s8Watchdog10PingThread33_F0B684E1C455B9DE2999D4562E567E94LLC4mainyyFTo + 28
5  Foundation                     0x5b524 __NSThread__start__ + 716
6  libsystem_pthread.dylib        0x16b8 _pthread_start + 148
7  libsystem_pthread.dylib        0xb88 thread_start + 8


com.apple.uikit.eventfetch-thread
0  libsystem_kernel.dylib         0xca4 mach_msg2_trap + 8
1  libsystem_kernel.dylib         0x13b74 mach_msg2_internal + 80
2  libsystem_kernel.dylib         0x13e4c mach_msg_overwrite + 540
3  libsystem_kernel.dylib         0x11e8 mach_msg + 24
4  CoreFoundation                 0x79024 __CFRunLoopServiceMachPort + 160
5  CoreFoundation                 0x7a250 __CFRunLoopRun + 1208
6  CoreFoundation                 0x7f3ec CFRunLoopRunSpecific + 612
7  Foundation                     0x41fb4 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212
8  Foundation                     0x41e9c -[NSRunLoop(NSRunLoop) runUntilDate:] + 64
9  UIKitCore                      0x4cfcc8 -[UIEventFetcher threadMain] + 416
10 Foundation                     0x5b524 __NSThread__start__ + 716
11 libsystem_pthread.dylib        0x16b8 _pthread_start + 148
12 libsystem_pthread.dylib        0xb88 thread_start + 8


com.google.firebase.crashlytics.MachExceptionServer
0  HerdBoss                       0x1f5b8c FIRCLSProcessRecordAllThreads + 393 (FIRCLSProcess.c:393)
1  HerdBoss                       0x1f5f6c FIRCLSProcessRecordAllThreads + 424 (FIRCLSProcess.c:424)
2  HerdBoss                       0x1ed440 FIRCLSHandler + 34 (FIRCLSHandler.m:34)
3  HerdBoss                       0x1efc18 FIRCLSMachExceptionServer + 521 (FIRCLSMachException.c:521)
4  libsystem_pthread.dylib        0x16b8 _pthread_start + 148
5  libsystem_pthread.dylib        0xb88 thread_start + 8


com.apple.NSURLConnectionLoader
0  libsystem_kernel.dylib         0xca4 mach_msg2_trap + 8
1  libsystem_kernel.dylib         0x13b74 mach_msg2_internal + 80
2  libsystem_kernel.dylib         0x13e4c mach_msg_overwrite + 540
3  libsystem_kernel.dylib         0x11e8 mach_msg + 24
4  CoreFoundation                 0x79024 __CFRunLoopServiceMachPort + 160
5  CoreFoundation                 0x7a250 __CFRunLoopRun + 1208
6  CoreFoundation                 0x7f3ec CFRunLoopRunSpecific + 612
7  CFNetwork                      0x2586f0 _CFURLStorageSessionDisableCache + 60900
8  Foundation                     0x5b524 __NSThread__start__ + 716
9  libsystem_pthread.dylib        0x16b8 _pthread_start + 148
10 libsystem_pthread.dylib        0xb88 thread_start + 8


Thread #1
0  libsystem_kernel.dylib         0x11ac __workq_kernreturn + 8
1  libsystem_pthread.dylib        0xe28 _pthread_wqthread + 364
2  libsystem_pthread.dylib        0xb7c start_wqthread + 8


Thread #2
0  libsystem_kernel.dylib         0x11ac __workq_kernreturn + 8
1  libsystem_pthread.dylib        0xe28 _pthread_wqthread + 364
2  libsystem_pthread.dylib        0xb7c start_wqthread + 8


Thread #3
0  libsystem_kernel.dylib         0x11ac __workq_kernreturn + 8
1  libsystem_pthread.dylib        0xe28 _pthread_wqthread + 364
2  libsystem_pthread.dylib        0xb7c start_wqthread + 8

Thread #4
0  libsystem_kernel.dylib         0x11ac __workq_kernreturn + 8
1  libsystem_pthread.dylib        0xe28 _pthread_wqthread + 364
2  libsystem_pthread.dylib        0xb7c start_wqthread + 8

Thread #5
0  libsystem_kernel.dylib         0x11ac __workq_kernreturn + 8
1  libsystem_pthread.dylib        0xe28 _pthread_wqthread + 364
2  libsystem_pthread.dylib        0xb7c start_wqthread + 8

Thread #6
0  libsystem_kernel.dylib         0x11ac __workq_kernreturn + 8
1  libsystem_pthread.dylib        0xe28 _pthread_wqthread + 364
2  libsystem_pthread.dylib        0xb7c start_wqthread + 8



推荐答案

这可能是iOS 16/17中的错误(所有报告该问题的用户都在iOS 16.x上).

当我在我的SIM卡上运行iOS 16,并使用与iOS 16兼容的Xcode版本时,冻结从未发生在我身上.IOS 17与Xcode的新版本一起发布,所以我将我的Xcode更新到了新版本(我也在使用之前的最新版本).一旦我这样做了,我就开始让用户界面在模拟器中冻结起来!喔!

现在它发生在我身上,我能够运行工具并更准确地跟踪UI锁定的堆栈跟踪.我得到了一个略有不同的堆栈跟踪,它在UICollectionView堆栈帧之前引用了UICalendarView.我不熟悉UICalendarView,但它似乎是UIDatePicker的新替代品.

我终于发现,viewWillLayoutSubviews被一次又一次地打来,永远打不完.在这些通话过程中,我没有更改我的用户界面中的任何内容的大小.但在iOS代码的深处,它是这样的.UICalendarView代码中的某些东西在每次调用layoutSubviews时都会进行某种布局更改,因此系统会一次又一次地调用viewWillLayoutSubviews,因为有些东西一直在变化.

我的UIDatePicker将在我的情节提要布局中从屏幕外开始,然后当需要时,我会将布局中的约束更改为更小,这将导致UIDatePicker滑动到屏幕上.

我发现避免这个奇怪的iOS错误的唯一解决办法是从我的故事板中删除UIDatePicker,然后用代码创建一个.而且,我没有在最初创建视图时执行此操作,而是将创建推迟到要显示UIDatePicker之前.然后,无论是什么引起了UICalendarView中的奇怪错误,就是没有发生.

Ios相关问答推荐

如何加密字符串使用AES. GCM在Dart和解密相同的Swift?

Fastlane,iOS Provisioning Profile推送通知权限(通过示例)&

带菜单的选取器不适用于Int32,但适用于Int

如何删除点击时按钮的不透明动画?

在Xcode 15中为具有@Binding的视图创建SwiftUI #预览的方法

Flutter Aging Person 自定义小部件

在我的 M1 上出现 Architecture arm64 问题,因此我无法运行我的旧项目

Xcode14 启动时崩溃:dyld:库未加载:/usr/lib/swift/libswiftCoreGraphics.dylib

如何在 SwiftUI 中只显示一次随机数组的项目?

SwiftUI Disclosure Group 文本对齐

SwiftUI - ScrollView 不显示底部文本

通过函数使用 Gesture 时,键入任何视图不能符合视图

判断Apple LiveText是否可用?

如何在 Swift 上的 sendSynchronousRequest 中判断 Response.statusCode

Xcode 6 App Store 提交失败并显示您的帐户已经拥有有效的 iOS 分发证书

Xcode 故事板:内部错误.请提交错误

如何在react 导航中获取当前路由名称?

呈现和关闭模态视图控制器

/usr/bin/codedesign 失败,退出代码为 1

我的应用程序因使用广告支持框架而被拒绝.哪个图书馆负责?