2012-12-07 22 views
11

मैं अपने अनुप्रयोग में इस त्रुटि हो रही है:UICollectionView: में अभिकथन विफलता - [UICollectionView _endItemAnimations]

*** -[UICollectionView _endItemAnimations] में अभिकथन विफलता, /SourceCache/UIKit/UIKit-2372/UICollectionView.m:2801

यह इस लाइन पर मेरी -controllerDidChangeContent: विधि में क्या होता है:

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

किसी को भी पता है यह क्या कारण हैं? मेरा कोड https://gist.github.com/4440c1cba83318e276bb से बारीकी से आधारित है और मुझे नुकसान हुआ है।

धन्यवाद!

उत्तर

1

मुझे यकीन है यह क्योंकि है कि आपके

-controllerDidChangeContent 

पृष्ठभूमि धागा कई बार बुलाया जा रहा है, और performBatchUpdates अभी भी काम कर रहा है जब एक और धागा यह कहता है, तो यह गलत व्यवहार होता है।

समाधान - @synchronized या का उपयोग कर NSLocks

+0

यह निश्चित रूप से मुख्य थ्रेड पर बुलाया जा रहा था तो यह मुद्दा नहीं था –

1

मुद्दा दृश्य didDisappear पर नहीं के बराबर करने के लिए एफआरसी प्रतिनिधि की स्थापना नहीं की गई थी में लपेट की कोशिश करो।

+0

चीयर्स! वह यह था! देखने पर एफआरसी को शून्य पर सेट करना डीआईडीएपियर ने स्वयं को इसी तरह के मुद्दे को हल किया। –

+0

एफआरसी के लिए क्या खड़ा है? : - | – Kalle

+0

@ केले: एफआरसी = प्राप्त परिणाम नियंत्रक – AlexR

9

इस प्रकार के दावे अपवाद के रूप में फेंक दिए जाते हैं। कोशिश/पकड़ में बैच अपडेट लपेटें और अपवाद विवरण डंप करें। यह आपको बताएगा कि यह आपके कॉल के बारे में क्या पसंद नहीं करता है।

दूसरे शब्दों में:

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

आह मैं स्विफ्ट पर हूं ... कितना दुर्भाग्यपूर्ण ... – Eonil

+0

डिबगिंग के लिए अच्छा विकल्प। – kelin