提问人:Mikhail Maslo 提问时间:10/14/2020 最后编辑:Mikhail Maslo 更新时间:6/21/2022 访问量:2624
单元格不应处于更新动画中(UICollectionView 崩溃)
Cell should never be in update animation (UICollectionView crash)
问:
我有 Cell 永远不应该在 crashlytics 报告的 UICollectionView 中的更新动画崩溃 此崩溃仅发生在 iOS 14 上的用户。当应用程序使用 SDK iOS 13 时,这并不明显(它影响了不到 0.01% 的所有用户)。但在支持 SDK iOS 14 后,崩溃频率明显增加到所有用户的近 0.25%。 在内部,据我所知(来自一些 UIKit 反汇编过程),UICollectionView 遍历可见单元格并检查单元格动画计数器是否等于零(否则,它会崩溃并显示以下堆栈跟踪)。这不确定,但大概崩溃发生在 performBatchUpdates(_:completion:) 我无法重现这个错误,而且我不能花更多时间深入研究 UIKitCore 反汇编代码来了解这个动画计数器何时以及为什么会发生变化。
Fatal Exception: NSInternalInconsistencyException
0 CoreFoundation 0x1915e9114 __exceptionPreprocess
1 libobjc.A.dylib 0x1a4e0fcb4 objc_exception_throw
2 CoreFoundation 0x1914f8308 -[CFPrefsSearchListSource addManagedSourceForIdentifier:user:]
3 Foundation 0x1927dc2c8 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:]
4 UIKitCore 0x1935b8548 __43-[UICollectionView _updateVisibleCellsNow:]_block_invoke_4.1070
5 UIKitCore 0x1935b8000 __43-[UICollectionView _updateVisibleCellsNow:]_block_invoke.1053
6 libdispatch.dylib 0x191221298 _dispatch_call_block_and_release
7 libdispatch.dylib 0x191222280 _dispatch_client_callout
8 libdispatch.dylib 0x1911d123c _dispatch_main_queue_callback_4CF$VARIANT$mp
9 CoreFoundation 0x191568c30 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
10 CoreFoundation 0x1915630e8 __CFRunLoopRun
11 CoreFoundation 0x191562200 CFRunLoopRunSpecific
12 GraphicsServices 0x1a765d598 GSEventRunModal
13 UIKitCore 0x193e28004 -[UIApplication _run]
14 UIKitCore 0x193e2d5d8 UIApplicationMain
15 App 0x100dd2d1c main + 49 (main.m:49)
16 libdyld.dylib 0x191241598 start
有没有人遇到同样的问题?你能重现它吗?
答: 暂无答案
评论
updates
completion
performBatchUpdates(_:completion:)