1

使用组合布局和屏幕上的 diffable 数据源删除集合视图的 uiviewrepresentable 时出现运行时崩溃。该视图当前位于 if 语句中,如果未找到数据,它将使用空数据视图而不是显示集合。

if collectionViewModel.showEmptyDataView{
        EmptyDataSetViewWithBuilder(title: collectionViewModel.errorDataTilte, description: collectionViewModel.errorDataDescription, image: Constants.EmptyDataSetImages.errorIcon, addButton: false, cartStyle: Themes.CartViewTheme) {
  //ViewBuilder
        }
      }else{
        HomeScreenCollectionView(ShopViewModel: collectionViewModel) { itemClicked in
//handle item clicked
        }
      }

我发现的快速解决方法是删除 if 语句并改用不透明度修饰符。

       EmptyDataSetViewWithBuilder(title: collectionViewModel.errorDataTilte, description: collectionViewModel.errorDataDescription, image: Constants.EmptyDataSetImages.errorIcon, addButton: false, cartStyle: Themes.CartViewTheme) {
  //ViewBuilder
        }.opacity(collectionViewModel.showEmptyDataView ? 1 : 0).zIndex(collectionViewModel.showEmptyDataView ? 1 : 0)

        HomeScreenCollectionView(ShopViewModel: collectionViewModel) { itemClicked in
//handle item clicked
        }.opacity(!collectionViewModel.showEmptyDataView ? 1 : 0).zIndex(!collectionViewModel.showEmptyDataView ? 1 : 0)

这只发生在 IOS 15 中,我也在控制台中看到了这个日志,[UICollectionViewRecursion] cv == 0x106131c00 Disabling recursion trigger logging我在以前的操作系统中没有看到这个日志。我注意到的另一件事是,这种运行时崩溃更频繁地发生在发布构建配置中。真的很喜欢组合布局和可区分的数据源,所以 id 在整个 ios 15 中继续使用它。但想确保这个错误不会继续发生。它使应用程序崩溃,尤其是在试飞/应用商店中

崩溃报告说它在 _AppearanceActionModifier.MergedBox.disappear+ 3049112 上崩溃

继承人完整的崩溃报告:

Hardware Model:      iPhone13,4
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]

Date/Time:           2021-10-12 17:48:13.6141 -0400
Launch Time:         2021-10-12 17:48:13.2125 -0400
OS Version:          iPhone OS 15.0.1 (19A348)
Release Type:        User
Baseband Version:    2.09.10
Report Version:      104

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x000000018923f698
Exception Note:  EXC_CORPSE_NOTIFY
Termination Reason: SIGNAL; [5]
Terminating Process: exc handler [7627]

Terminating Process: exc handler [7627]
Triggered by Thread:  0

Thread 0 name:   Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   SwiftUI                                0x18923f698 _AppearanceActionModifier.MergedBox.disappear+ 3049112 () + 28
1   SwiftUI                                0x1894f9ea4 implicit closure #4 in implicit closure #3 in _AppearanceActionModifier.MergedCallbacks.value.getter + 24
2   SwiftUI                                0x189068720 thunk for @escaping @callee_guaranteed () -> + 1120032 () + 28
3   SwiftUI                                0x188f8e8fc thunk for @escaping @callee_guaranteed () -> (@out + 227580 ()) + 28
4   SwiftUI                                0x189068720 thunk for @escaping @callee_guaranteed () -> + 1120032 () + 28
5   SwiftUI                                0x188f6ce68 closure #1 in ViewRendererHost.render+ 89704 (interval:updateDisplayList:) + 2596
6   SwiftUI                                0x189033f78 ViewRendererHost.render+ 905080 (interval:updateDisplayList:) + 336
7   SwiftUI                                0x188f7fe18 _UIHostingView.layoutSubviews+ 167448 () + 312
8   SwiftUI                                0x188f83b24 @objc _UIHostingView.layoutSubviews+ 183076 () + 28
9   UIKitCore                              0x183b5ecc8 -[UIView+ 1629384 (CALayerDelegate) layoutSublayersOfLayer:] + 2620
10  QuartzCore                             0x1852b8280 CA::Layer::layout_if_needed+ 258688 (CA::Transaction*) + 536
11  QuartzCore                             0x1852aaaa8 CA::Layer::layout_and_display_if_needed+ 203432 (CA::Transaction*) + 144
12  QuartzCore                             0x1852bf0b0 CA::Context::commit_transaction+ 286896 (CA::Transaction*, double, double*) + 500
13  QuartzCore                             0x1852c8174 CA::Transaction::commit+ 323956 () + 680
14  QuartzCore                             0x1852aa210 CA::Transaction::flush_as_runloop_observer+ 201232 (bool) + 88
15  UIKitCore                              0x183f15c28 _UIApplicationFlushCATransaction + 76
16  UIKitCore                              0x1841afad8 _UIUpdateSequenceRun + 84
17  UIKitCore                              0x184827294 schedulerStepScheduledMainSection + 144
18  UIKitCore                              0x184826760 runloopSourceCallback + 60
19  CoreFoundation                         0x1815e2030 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
20  CoreFoundation                         0x1815f2cf0 __CFRunLoopDoSource0 + 208
21  CoreFoundation                         0x18152cff8 __CFRunLoopDoSources0 + 268
22  CoreFoundation                         0x181532804 __CFRunLoopRun + 820
23  CoreFoundation                         0x1815463c8 CFRunLoopRunSpecific + 600
24  GraphicsServices                       0x19cd5738c GSEventRunModal + 164
25  UIKitCore                              0x183eec0bc -[UIApplication _run] + 1100
26  UIKitCore                              0x183c69be8 UIApplicationMain + 2124
27  SwiftUI                                0x189195d90 closure #1 in KitRendererCommon+ 2354576 (_:) + 164
28  SwiftUI                                0x1890c2ebc runApp<A>+ 1490620 (_:) + 252
29  SwiftUI                                0x1890a4278 static App.main+ 1364600 () + 128
30   Development                       0x102bddb90 main + 23440 (<compiler-generated>:0)
31  dyld                                   0x1060eda24 start + 520

Thread 1:
0   libsystem_pthread.dylib                0x1f19fcf48 start_wqthread + 0

Thread 2:
0   libsystem_pthread.dylib                0x1f19fcf48 start_wqthread + 0

Thread 3:
0   libsystem_pthread.dylib                0x1f19fcf48 start_wqthread + 0

Thread 4:
0   libsystem_pthread.dylib                0x1f19fcf48 start_wqthread + 0

Thread 5 name:  com.apple.uikit.eventfetch-thread
Thread 5:
0   libsystem_kernel.dylib                 0x1b800a564 mach_msg_trap + 8
1   libsystem_kernel.dylib                 0x1b800abfc mach_msg + 76
2   CoreFoundation                         0x18152e698 __CFRunLoopServiceMachPort + 372
3   CoreFoundation                         0x18153298c __CFRunLoopRun + 1212
4   CoreFoundation                         0x1815463c8 CFRunLoopRunSpecific + 600
5   Foundation                             0x182d69d54 -[NSRunLoop+ 101716 (NSRunLoop) runMode:beforeDate:] + 236
6   Foundation                             0x182dab6a8 -[NSRunLoop+ 370344 (NSRunLoop) runUntilDate:] + 92
7   UIKitCore                              0x183e6507c -[UIEventFetcher threadMain] + 524
8   Foundation                             0x182db995c __NSThread__start__ + 792
9   libsystem_pthread.dylib                0x1f19fda60 _pthread_start + 148
10  libsystem_pthread.dylib                0x1f19fcf5c thread_start + 8

Thread 6:
0   libsystem_pthread.dylib                0x1f19fcf48 start_wqthread + 0

Thread 7:
0   libsystem_pthread.dylib                0x1f19fcf48 start_wqthread + 0

Thread 8 name:  com.google.firebase.crashlytics.MachExceptionServer
Thread 8:
0   libsystem_kernel.dylib                 0x1b800bf78 write + 8
1   Development                        0x10333156c FIRCLSSDKFileLog + 7705964 (FIRCLSInternalLogging.c:63)
2   Development                        0x10332cbc8 FIRCLSMachExceptionReply + 7687112 (FIRCLSMachException.c:267)
3  Development                         0x10332c6cc FIRCLSMachExceptionServer + 7685836 (FIRCLSMachException.c:178)
4   libsystem_pthread.dylib                0x1f19fda60 _pthread_start + 148
5   libsystem_pthread.dylib                0x1f19fcf5c thread_start + 8

Thread 9:
0   libsystem_pthread.dylib                0x1f19fcf48 start_wqthread + 0

Thread 10 name:  com.apple.NSURLConnectionLoader
Thread 10:
0   libsystem_kernel.dylib                 0x1b800a564 mach_msg_trap + 8
1   libsystem_kernel.dylib                 0x1b800abfc mach_msg + 76
2   CoreFoundation                         0x18152e698 __CFRunLoopServiceMachPort + 372
3   CoreFoundation                         0x18153298c __CFRunLoopRun + 1212
4   CoreFoundation                         0x1815463c8 CFRunLoopRunSpecific + 600
5   CFNetwork                              0x181fb78d0 0x181d3d000 + 2599120
6   Foundation                             0x182db995c __NSThread__start__ + 792
7   libsystem_pthread.dylib                0x1f19fda60 _pthread_start + 148
8   libsystem_pthread.dylib                0x1f19fcf5c thread_start + 8

Thread 11:
0   libsystem_kernel.dylib                 0x1b800a564 mach_msg_trap + 8
1   libsystem_kernel.dylib                 0x1b800abfc mach_msg + 76
2   CoreFoundation                         0x18152e698 __CFRunLoopServiceMachPort + 372
3   CoreFoundation                         0x18153298c __CFRunLoopRun + 1212
4   CoreFoundation                         0x1815463c8 CFRunLoopRunSpecific + 600
5   Foundation                             0x182d69d54 -[NSRunLoop+ 101716 (NSRunLoop) runMode:beforeDate:] + 236
6   Foundation                             0x182d6a510 -[NSRunLoop+ 103696 (NSRunLoop) run] + 92
7   SwiftUI                                0x189014f84 static DisplayLink.asyncThread+ 778116 (arg:) + 836
8   SwiftUI                                0x189012b70 @objc static DisplayLink.asyncThread+ 768880 (arg:) + 100
9   Foundation                             0x182db995c __NSThread__start__ + 792
10  libsystem_pthread.dylib                0x1f19fda60 _pthread_start + 148
11  libsystem_pthread.dylib                0x1f19fcf5c thread_start + 8


Thread 0 crashed with ARM Thread State (64-bit):
    x0: 0x0000000280b49780   x1: 0x0000000280b49780   x2: 0x0000000000000001   x3: 0x00000001930ae4f4
    x4: 0x00000000000002e0   x5: 0x00000001063ba020   x6: 0x000000000000005e   x7: 0x0000000000000005
    x8: 0x00000000ffffffff   x9: 0x0000000281e6eb80  x10: 0x0000000000000003  x11: 0x0000000200000003
   x12: 0x0000000000000003  x13: 0x000000003a204827  x14: 0x000000003a405000  x15: 0x0000000000005000
   x16: 0x000000003a400000  x17: 0x0000000000000f08  x18: 0x0000000114a31600  x19: 0x0000000000000007
   x20: 0x0000000280b49780  x21: 0x0000000106219aa8  x22: 0x00000001894fa77c  x23: 0x0000000000000002
   x24: 0x00000001db34e000  x25: 0x00000001db9758d8  x26: 0x00000001db34e000  x27: 0x0000000106219a50
   x28: 0x0000000281e6c140   fp: 0x000000016d223790   lr: 0x00000001894f9ea4
    sp: 0x000000016d223780   pc: 0x000000018923f698 cpsr: 0x80000000
   far: 0x000000011c084000  esr: 0xf2000001 (Breakpoint) brk 1

Binary Images:
       0x188f57000 -        0x189f77fff SwiftUI arm64e  <6d99bb3b20803dbbaecf604b49eb822d> /System/Library/Frameworks/SwiftUI.framework/SwiftUI
       0x1839d1000 -        0x185253fff UIKitCore arm64e  <0e2d8679d5f13c0390107f6ce3662789> /System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore
       0x185279000 -        0x18555cfff QuartzCore arm64e  <8ab30eebfb1536cb9c27918ed68500ee> /System/Library/Frameworks/QuartzCore.framework/QuartzCore
       0x181527000 -        0x18197afff CoreFoundation arm64e  <6174789ae88c3f5cba39de2e9edc0750> /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
       0x19cd56000 -        0x19cd5efff GraphicsServices arm64e  <0f7424f6bde5311aa3fac0e0c4c28d72> /System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices
       0x102bd8000 -        0x103983fff Development arm64  <d40c6dc01ef5385687bfe7476ba7240f> /private/var/containers/Bundle/Application/4F3744A5-3BEF-472F-8674-AF6F0414AE5F/Development.app/Development
       0x1060d4000 -        0x10612bfff dyld arm64e  <d48c31ee061f370ba6f78391a1b53ed8> /usr/lib/dyld
       0x1f19fc000 -        0x1f1a07fff libsystem_pthread.dylib arm64e  <bc1ce0c6a9f2396b9afb623d3acd5881> /usr/lib/system/libsystem_pthread.dylib
       0x1b8009000 -        0x1b803cfff libsystem_kernel.dylib arm64e  <d2476f74d204348d8d386165d0485c7c> /usr/lib/system/libsystem_kernel.dylib
       0x182d51000 -        0x183055fff Foundation arm64e  <efbca2ff8b8c3227abbc154ba851d23c> /System/Library/Frameworks/Foundation.framework/Foundation
       0x181d3d000 -        0x182201fff CFNetwork arm64e  <570aad29ce5c3cd9ab01ad21e1440ddb> /System/Library/Frameworks/CFNetwork.framework/CFNetwork

EOF

让我知道我是否可以提供更多信息来帮助解决这个问题。

4

0 回答 0