2012-11-20 17 views
8

मेरे पास एक आईओएस ऐप है जो आईओएस 5 पर इस तरह से दुर्घटनाग्रस्त नहीं हुआ है जो अब 4 या 5 बीजी/एफजी चक्रों के बाद स्टार्टअप पर आईओएस 6 पर लगातार क्रैश हो रहा है। मैंने इस मुद्दे को एलासेट्स लाइब्रेरी एन्युमेरेट ग्रुप विथ टाइप्स के अपने इनवॉशंस में ढूंढ लिया है (जब भी यह शुरू होता है तो ऐप अंतर्निहित फोटो लाइब्रेरी में सिंक हो जाता है)। ग्रुप विथ टाइप्स को कॉल करने के लिए कॉल प्रेषण कतार के माध्यम से आवंटित पृष्ठभूमि थ्रेड के भीतर से बनाए जाते हैं ताकि सिंक कोड समाप्त हो सके, भले ही उपयोगकर्ता इसे समाप्त होने से पहले बीजी पर ऐप भेजता हो। __addContextToList_block_invoke_0() मेंक्या किसी ने पृष्ठभूमि थ्रेड में ALAssetsLibrary का उपयोग करते समय क्रैश का अनुभव किया है?

* अभिकथन विफलता, /SourceCache/PhotoLibraryServices/MobileSlideShow-1647.5/Sources/PLManagedObjectContext.m:1305

और

: दुर्घटना संदेश मैं प्राप्त हमेशा एक ही है * अपरिपक्व अपवाद के कारण ऐप को समाप्त करना 'एनएसआईएननल इन्फॉन्सिस्टेंसी अपवाद', कारण: 'बहुत सारे संदर्भ। संदर्भ सूची में कोई जगह नहीं। '

इन त्रुटि संदेशों के लिए गुगलिंग ने कुछ भी नहीं दिया है। चूंकि यह तब तक नहीं होता जब तक कि ऐप कम से कम 5 बार चालू/बंद नहीं हो जाता, मैं सोच रहा हूं कि जब वे खत्म हो जाएंगे तो शायद सेब डेटा संरचनाओं से ब्लॉक को सही ढंग से हटाया नहीं जा रहा है? किसी भी लीड के लिए अग्रिम धन्यवाद।

अद्यतन: अधिक जांच के बाद, यह एलासेट्स समूह समूह को सिंक करने से संबंधित प्रतीत होता है। क्रैश तब नहीं होता है जब मैं केवल एलासेट्स समूह समूह सहेजता हूं या यदि एलासेट्स समूह समूह में 0 फ़ोटो हैं। यह तब होगा जब मैं केवल एलासेट्स समूह समूह को सिंक करता हूं और वहां कम से कम 1 फ़ोटो होती है।

उत्तर

7

यह पता चला है कि यह सब प्रत्येक सिंक के लिए एलासेट्स लाइब्रेरी को पुन: आवंटित करने से संबंधित है। इसके बजाय सदस्य चर जोड़कर, क्रैशिंग गायब हो गई प्रतीत होती है।

संपत्ति लाइब्रेरी = [[अलास्सेट्स लाइब्रेरी आवंटन] init];

हालांकि यह स्पष्ट रूप से मेरे कोड के लिए एक अधिक कुशल/बेहतर डिजाइन है, मैं कहेंगे समस्याओं मैं मिला है ALAssetsLibrary और सूत्रण के साथ कुछ एआरसी समस्या का संकेत। केवल एक बार आवंटित करने के लिए सुनिश्चित करें!

1

मैं एक ही मुद्दे का सामना करना पड़ा:

कम के लिए: ALAssetsLibrary उदाहरण प्रकार के साथ ALAssetsLibrary उदाहरण गणना करते समय किया जाता है या ALAssetsGroup instaces अंतिम चरण प्रगणित संपत्ति की गणना कर रहे हैं, और ALAssetsGroup उदाहरणों सब की गणना से पहले बदल दिया गया कभी नहीं करना चाहिए ब्लॉक खत्म हो गए हैं।

0

ALAssetsLibrary गणन मुख्य थ्रेड में चलता है (this SO answer देखें)। मुझे संदेह है कि ऐसा इसलिए है क्योंकि संपत्ति लाइब्रेरी उपयोगकर्ता डेटा के उपयोग की अनुमति के लिए उपयोगकर्ता के साथ बातचीत कर सकती है (क्योंकि फ़ोटो में जियोटैगिंग है)। अपने कोड मान लिया गया है कि अगर ALAssetsLibrary एक पृष्ठभूमि सूत्र में चलना जारी रहेगा

यह आपकी समस्या के स्रोत हो सकता है।

संबंधित मुद्दे