2015-01-09 67 views
2

完全難倒了這一點。當我解僱正在被呈現在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://stackoverflow.com/a/20976220/35499)。基本上它建議使用工具來查看你可能在哪裏泄漏內存。 – dean 2015-01-09 20:13:31

+0

嗯,我做到了。並沒有任何。我確實發現瞭如何防止崩潰(但不是原因)。請參閱更新2。 – 2015-01-09 21:24:41

回答

0

您也可以通過嘗試:

[collectionView performBatchUpdates:nil completion:nil];

當您關閉您的控制器。 我解決了同樣的錯誤使用此