集合视图批量更新崩溃



我间歇性地得到Crashlytics报告,错误如下:

Crashed: com.apple.main-thread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x0000000e
 raw
libobjc.A.dylib 
objc_msgSend + 5
1
UIKit   
-[UICollectionViewUpdate _computeItemUpdates] + 1588
2
UIKit   
-[UICollectionViewUpdate initWithCollectionView:updateItems:oldModel:newModel:oldVisibleBounds:newVisibleBounds:] + 254
3
UIKit   
-[UICollectionView _endItemAnimations] + 6904
4
UIKit   
-[UICollectionView performBatchUpdates:completion:] + 386

我如何调试这个?崩溃似乎是UICollectionView的内部故障。这是否意味着崩溃是苹果SDK的内部问题?

您可以添加一个以-[UICollectionViewUpdate _computeItemUpdates]为值的符号断点。无论何时调用该方法,您都可以浏览堆栈跟踪,并(希望)看到崩溃前最后调用的代码行。

这种方法的缺点是你可能会得到很多停顿,而不是崩溃,但它会让你知道它是从哪里来的。一旦在代码中找到崩溃的根源,就取消断点的设置,并更改值或设置与单元格相关的内容,直到可以导致崩溃发生为止。

这通常是我从Flurry的崩溃报告中追踪崩溃的方法。由于您在半年前就问过这个问题,如果您找到了跟踪这些类型bug的解决方案,我将非常感谢您的分享:)

最新更新