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 
}]; 
+0

这个答案看起来像它处理类似的问题:[mach_vm_map失败(错误代码= 3)](http://*.com/a/20976220/35499)。基本上它建议使用工具来查看你可能在哪里泄漏内存。 – dean 2015-01-09 20:13:31

+0

嗯,我做到了。并没有任何。我确实发现了如何防止崩溃(但不是原因)。请参阅更新2。 – 2015-01-09 21:24:41

您也可以通过尝试:

[collectionView performBatchUpdates:nil completion:nil];

当您关闭您的控制器。 我解决了同样的错误使用此