2012-12-07 24 views
11
benim uygulamada bu hatayı alıyorum

:UICollectionView: in Onaylama arızası - [UICollectionView _endItemAnimations]

*** Onaylama yetmezliği -[UICollectionView _endItemAnimations] yılında, /SourceCache/UIKit/UIKit-2372/UICollectionView.m:2801

Bu hat üzerinde benim -controllerDidChangeContent: yöntem olur

:

[self.collectionView performBatchUpdates:^{...}]; 

kimse bu neden biliyor mu? Kodum yakından https://gist.github.com/4440c1cba83318e276bb kapalı ve ben bir kayıp var.

Teşekkürler!

cevap

1

Ben bunun nedeni

-controllerDidChangeContent 

arka plan iş parçacığı birden çok kez çağrılan Bunun bahse ve başka bir iş parçacığı bunu aradığında performBatchUpdates hala çalışıyor, bu yüzden yanlış davranışlara yol açar.

Çözüm - @synchronized veya kullanan NSLocks

+0

çağrıldığını bu yüzden bu –

1

konu görünümü didDisappear üzerinde sıfıra FRC temsilci ayarı değildi onu sarmak için deneyin.

+0

Cheers sorun değildi! Öyleydi! FRC'yi görünümde geçersiz kılmakDidDisgörüntüleme ve görünümün kendiliğinden yeniden atanmasıWillAppear benzer sorunumu çözdü. –

+0

FRC ne anlama geliyor? : - | – Kalle

+0

@Kalle: FRC = Fetched Results Denetleyici – AlexR

9

Bu tür iddialar istisna olarak atılır. Toplu güncelleştirmeleri bir try/catch'a sarın ve istisna açıklamasını dökün. Aramanızla ilgili tam olarak neyin hoşlanmadığını size söyleyecektir. Başka bir deyişle

: Kesinlikle ana iş parçacığı üzerinde

@try 
    { 
     [self.collectionView performBatchUpdates:^{...}]; 
    } 
    @catch (NSException *except) 
    { 
     NSLog(@"DEBUG: failure to batch update. %@", except.description); 
    } 
+1

Ah Ben Swift'im ... ne kadar talihsiz ... – Eonil

+0

Hata ayıklama için iyi bir seçenek. – kelin