2011-01-03 7 views
5

अधिकांश समय, मेरा छवि पिकर पूरी तरह से काम करता है (आईओएस 4.2.1)। हालांकि, अगर मैं लगभग 300 फ़ोटो के अपने कैमरे रोल के माध्यम से लगभग 4-6 बार बहुत तेज़ी से ऊपर और नीचे स्क्रॉल करता हूं, तो मुझे एक क्रैश मिलता है। यह एक ही आईफोन 3 जी पर "फोटो" ऐप के साथ कभी नहीं होता है। साथ ही, मैं देख रहा हूं कि स्टॉक "फोटो" ऐप मेरे छवि पिकर की तुलना में अधिक आसानी से स्क्रॉल करता है।UIImagePickerController तेजी से स्क्रॉलिंग पर क्रैश होता है, फ़ोटो ऐप से धीमा

क्या किसी और ने इस व्यवहार को देखा है? मुझे दिलचस्पी होगी अगर अन्य लोग अपने ऐप्स में इसका प्रयास कर सकते हैं और देख सकते हैं कि वे दुर्घटनाग्रस्त हैं या नहीं। मुझे नहीं लगता कि यह मेरे आईफोन पर अन्य ऑब्जेक्ट्स को मैग्जिंग मेमोरी से संबंधित है क्योंकि यह एक साधारण ऐप है, और ऐप शुरू करने के बाद यह ठीक होता है। यह मेरे क्रैश लॉग के आधार पर अन्य रिलीज ऑब्जेक्ट्स या अन्य ऑब्जेक्ट्स को ओवरडिलेज़लोड में भेजे गए संदेशों से संबंधित प्रतीत नहीं होता है और तथ्य यह है कि सिम्युलेटर अनुरूपित स्मृति चेतावनियों को अच्छी प्रतिक्रिया देता है। मुझे लगता है कि यह UIImagePickerController के आंतरिक कार्यान्वयन में एक बग हो सकती है ...

यह मैं कैसे पिकर शुरू है। मैंने यह कई तरीकों से किया है (मेरे शीर्षलेख में UIImagePickerController के लिए एक बरकरार संपत्ति सेट करना और डेलोक पर रिलीज़ करना)। यह सबसे अच्छा तरीका है प्रतीत हो रहा है (कम से कम दुर्घटनाओं):

UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
picker.delegate = self; 
picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 
picker.allowsEditing = YES;   
[self presentModalViewController:picker animated:YES]; 
[picker release]; 

यह वह जगह है दुर्घटनाग्रस्त हो धागा (मैं विभिन्न प्रकार के अपवाद मिल):

Exception Type: SIGSEGV 
Exception Codes: SEGV_ACCERR at 0xfffffffff4faafa4 
Crashed Thread: 8 
... 
Thread 8 Crashed: 
0 CoreFoundation  0x000494ea -[__NSArrayM replaceObjectAtIndex:withObject:] + 98 
1 PhotoLibrary  0x00008e0f -[PLImageTable _segmentAtIndex:] + 527 
2 PhotoLibrary  0x00008a21 -[PLImageTable _mappedImageDataAtIndex:] + 221 
3 PhotoLibrary  0x0000893f -[PLImageTable dataForEntryAtIndex:] + 15 
4 PhotoLibrary  0x000087e7 PLThumbnailManagerImageDataAtIndex + 35 
5 PhotoLibrary  0x00008413 -[PLThumbnailManager _dataForPhoto:format:width:height:bytesPerRow:dataWidth:dataHeight:imageDataOffset:imageDataFormat:preheat:] + 299 
6 PhotoLibrary  0x000b6c13 __-[PLThumbnailManager preheatImageDataForImages:withFormat:]_block_invoke_1 + 159 
7 libSystem.B.dylib 0x000d6680 _dispatch_call_block_and_release + 20 
8 libSystem.B.dylib 0x000d6ba0 _dispatch_worker_thread2 + 128 
9 libSystem.B.dylib 0x0007b251 _pthread_wqthread + 265 
+0

यह कोशिश की लेकिन iPad या iPhone 4 पर पुन: पेश नहीं कर सका, 4.2.1 चल रहा है। क्या यह किसी विशेष फोटो रोल पर निर्भर करता है? – mvds

+0

अच्छी तरह से SEGV_ACCERR संकेत देता है कि आपके पास पहुंचने की अनुमति नहीं है। क्या आपने पिकर के बिना कोशिश की है .allowsEditing = हाँ; ? – Erle

+0

मैंने अपने आईफोन 3 जी पर http://bit.ly/beeRq और मेरे आईपॉड टच 4 वें जीन (अलग-अलग फोटो) से पिकर डेमो के साथ समस्या को दोबारा उत्पन्न किया, इसलिए मुझे नहीं लगता कि यह मेरा कोड जरूरी है या फोटो रोल है। .. मैंने अभी भी picker.allowsEditing = NO और एक ही समस्या का प्रयास किया। आपको वास्तव में तस्वीरों के शीर्ष तक जितनी जल्दी हो सके पागल की तरह पिकर को स्क्रॉल करना होगा और इसे क्रैश करने के लिए कई बार वापस लेना होगा। –

उत्तर

10

मैं एक ठीक है कि बेहद स्क्रॉल प्रदर्शन को बेहतर बनाता पता लगा छवि पिकर का और पूरी तरह से दुर्घटनाओं को खत्म करता है। दुर्भाग्यवश, मुझे नहीं पता कि यह क्यों काम करता है।

उपरोक्त कोड में, परिवर्तन:

picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 

रहे हैं:

picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
+0

निश्चित रूप से यह एक कामकाज है, लेकिन किसी भी तरह यह काम करता है :) – konradowy

+0

हाँ, यह काम करता है। – Ter