UICollectionView dealloc声明失败崩溃
问题描述:
完全难倒了这一点。当我解雇正在被呈现在iOS 8的自定义演示/转移我的视图控制器,我得到的私有API崩溃,此错误:UICollectionView dealloc声明失败崩溃
*** Assertion failure in -[UICollectionView dealloc], /SourceCache/UIKit/UIKit- 3318.16.21/UICollectionView.m:665
我所知道的是,如果我删除任何这些:
[self.collectionView performBatchUpdates:^{
// append your data model to return a larger size for
// cell at this index path
} completion:nil];
然后它不会崩溃。
但是这些方法不会在dealloc,dismiss,viewWillDisappear上调用。字面上任何事情。这就像调用或消息被卡住在某个维度并在视图被解散后调用。但是我不能记录他们,如果我试图在逻辑上阻止他们在这种情况下被调用,它什么也不做。这有点合理:他们实际上并没有被称为。
UGH!想法?
更新:
我刚刚崩溃更多信息(寿仍然不透明)
malloc: *** mach_vm_map(size=2146844672) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
更新2:
我得到它停止包装一些崩溃代码:
[self performAfterDelay:0 block:^{
//batch updates
}];
答
您也可以通过尝试:
[collectionView performBatchUpdates:nil completion:nil];
当您关闭您的控制器。 我解决了同样的错误使用此
这个答案看起来像它处理类似的问题:[mach_vm_map失败(错误代码= 3)](http://*.com/a/20976220/35499)。基本上它建议使用工具来查看你可能在哪里泄漏内存。 – dean 2015-01-09 20:13:31
嗯,我做到了。并没有任何。我确实发现了如何防止崩溃(但不是原因)。请参阅更新2。 – 2015-01-09 21:24:41