2015-01-09 3 views
2

Совершенно тупик на этом. Когда я распускать мой контроллер представления, который будет представлен с пользовательской презентацией/переходом в прошивке 8, я получаю аварии на частную API с этой ошибкой:UICollectionView dealloc assertation fail crash

*** 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, увольняют, viewWillDisappear. Буквально ничего. Это похоже на то, что вызовы или сообщения задерживаются в каком-то измерении и вызываются после отклонения представления. Но я не могу их зарегистрировать, и если я попытаюсь ввести логику, которая не позволяет им быть вызванным в этом случае, она ничего не делает. Какой вид имеет смысл: они на самом деле не называются.

UGH! Идеи?

Update:

Я только что получил аварии с большим количеством информации (Тхо все еще непрозрачной)

malloc: *** mach_vm_map(size=2146844672) failed (error code=3) 
*** error: can't allocate region 
*** set a breakpoint in malloc_error_break to debug 

Update 2:

Я получил его, чтобы остановить сбой, обернув некоторые код в:

[self performAfterDelay:0 block:^{ 
    //batch updates 
}]; 
+0

Этот ответ выглядит как проблема с аналогичной проблемой: [mach_vm_map failed (код ошибки = 3)] (http://stackoverflow.com/a/20976220/35499). В основном это предлагает использовать инструменты, чтобы увидеть, где вы можете протекать в памяти. – dean

+0

Ну, я сделал это. И их нет. Я узнал, как предотвратить крах (но не причину). См. Обновление 2. –

ответ

0

Вы также можете попробовать с помощью:

[collectionView performBatchUpdates:nil completion:nil];

когда вы закроете ваш контроллер. Я решил ту же ошибку, используя эту ошибку

Смежные вопросы