我收到一个无法确定性地重新创建的随机错误,这使得调试很痛苦。例外是
NSInternalInconsistencyException { 行:0x1e5eb080.posErrorMarker == 1 + 1*0x1e5eb080.negError + 1*0x1fa51a40.marker 0x1f933020.negError == 274 + 1*0x1f933020.posErrorMarker + -1*0x1fb84100.f.ne 0x=b 284100.f.ne 0x=
>
0CoreFoundation 0x32c1b3e7 + 162
1libobjc.A.dylib 0x3a916963 objc_exception_throw + 30
2CoreFoundation 0x32c1b307 + 106
3Foundation 0x335ce24f + 190
4Foundation 0x335d0871 + 60
5Foundation 0x335d19e9 + 624
6Foundation 0x335d9eab + 230
7UIKit 0x34e6211b + 162
8UIKit 0x34e67b9f + 26
9CoreFoundation 0x32b61acd CFArrayApplyFunction + 176
10UIKit 0x34e67bdf + 90
11CoreFoundation 0x32b61acd CFArrayApplyFunction + 176
12UIKit 0x34e67bdf + 90
13CoreFoundation 0x32b61acd CFArrayApplyFunction + 176
14UIKit 0x34e67bdf + 90
15CoreFoundation 0x32b61acd CFArrayApplyFunction + 176
16UIKit 0x34e67bdf + 90
17UIKit 0x34e67c6f + 26
18UIKit 0x34a2d769 + 732
19UIKit 0x34a78091 + 72
20UIKit 0x34e3b80d + 132
21UIKit 0x34e48e17 + 1830
22UIKit 0x34e46f37 + 7530
23MyApp 0x00093dd1 __32-[MyController requestStuff:]_block_invoke (MyController.m:123) + 298449
MyController.m:123 实际上只是对我在 MyController.m 中定义的另一个名为 requestLocalStuff 的方法的调用:
[self requestLocalStuff];
这很奇怪,因为它似乎没有在 requestLocalStuff 中的特定行上引发异常。
关于如何调用它的一些上下文:
- 这是从网络调用返回的。我正在使用 AFNetworking。
- 进行网络调用的方法以一个块为参数,在网络调用成功返回后调用该块;因此堆栈跟踪中的 _block_invoke 。
- requestLocalStuff 调用 CoreData 并最终使用 insertItemsAtIndexPaths 更新控制器中的 UICollectionView。但正如堆栈跟踪所示,错误似乎不是从 requestLocalStuff 中抛出的
- 由于UICollectionView中的错误,我被迫将 UICollectionViewFlowLayout 子类化以捕获导致应用程序崩溃的异常。不确定是否可以参与。
我的 UICollectionViewFlowLayout 子类:
-(void)prepareForCollectionViewUpdates:(NSArray *)updateItems{
@try {
[super prepareForCollectionViewUpdates:updateItems];
}
@catch (NSException *exception) {
DDLogError(@"Error in the layout: %@", exception);
}
@finally {
}
}
我在Google上搜索了 posErrorMarker 的解释,但无济于事。有没有人知道这里可能发生了什么?