我有一些奇怪的行为,我正在尝试调试,我可以可靠地重现该问题,但我还不了解其根本原因.我注意到抛出异常,所以我向Xcode添加了一个异常断点.
例外:
CoreData: error: SerIoUs application error. An exception was caught
from the delegate of NSFetchedResultsController during a call to
-controllerDidChangeContent:. *** -[__NSArrayM objectAtIndex:]: index 2 beyond bounds for empty array with userInfo (null)
所以,随着我的断点到位,我得到以下堆栈跟踪:
这看起来非常有用!对于可重复使用的标题视图,看起来UICollectionViewFlowLayout正在发生一些困难…现在我只需要……哦.废话.等待.什么?
如何检查使用越界索引调用的堆栈跟踪的第1帧中的数组?我可以po<一些内存地址>在控制台检查它?当选择第11 – 1帧时,我无法在LLDB控制台中使用帧变量(from here).
我读这个堆栈跟踪的方式是:
>(第14帧)获取的结果控制器已选择托管对象上下文更改,并调用它的委托
>(第13帧)FRC委托是FHMemberDirectory的一个实例,它将消息-memberDirectoryDidChangeContent:completion:发送到视图控制器FHMemberDirectoryViewController,它是UICollectionViewController的子类.
>(第12帧)视图控制器调用-performBatchUpdates:completion:on它的UICollectionView实例
>(第10-1帧)私人Apple的东西碰巧尝试在屏幕上布局集合视图;我认为!
…如果我错过了一些明显的东西,请告诉我!这个问题是关于调试的,我希望另一组眼睛或更多的专业知识可以启发我.
对于我未经训练的眼睛,这似乎是一个埋在Apple代码中的错误,但我仍然需要找到解决它的方法.我的问题的主旨是理解如何从不受我直接控制的代码中从LLDB控制台获取有用信息.