2011-07-07 14 views
5

क्या कोई भी संभवतः यहां मेरी सहायता कर सकता है, मुझे अपने कोड में अचानक NSFastEnumerationMutationHandler क्रैश क्यों मिल रहा है। मैं सब खाली हूं लेकिन यह दुर्घटना अचानक क्यों चली गई और इसे कैसे स्क्वैश किया जाए।NSFastEnumerationMutationHandler क्रैश

धन्यवाद।

+1

क्या आप कम से कम कुछ कोड प्रदान कर सकते हैं ताकि हम आपकी समस्या को और समझने की कोशिश कर सकें? – Luke

+0

यहां कुछ कोड पेस्ट करें – sujith1406

+0

क्या वास्तव में "nsfastenumerationmutationhandler" में कोई पूंजीकरण/CamelCasing नहीं है? –

उत्तर

13

क्रैश त्रुटि: **** न आया हुआ अपवाद 'NSGenericException', कारण की वजह से एप्लिकेशन समाप्त: '* ** संग्रह < __NSArrayM:। 0x610000859410> जबकि प्रगणित किया जा रहा उत्परिवर्तित गया था' *

तेजी से गणना का उपयोग करते समय आपको एक सरणी बदलने की कोशिश करनी होगी।

उदाहरण

for (id anObject in anArray) { 
    if (/* anObject satisfies some condition */) { 
     [anArray removeObject:anObject]; 
    } 
} 

नहीं किया जाना चाहिए है। फ़िल्टर करने के लिए एक अलग सरणी या शायद filteredArrayUsingPredicate: विधि का उपयोग करें। उपाय, हालांकि, आप जो करने की कोशिश कर रहे हैं उस पर निर्भर करता है।

+0

धन्यवाद दीपक, मैं Google से कुछ निर्दिष्ट लिंक से गुजर चुका था, कुछ लोगों ने एक ही बात सुनाई है। अब, सबसे बड़ी समस्या यह है कि, मेरे पास एक बड़ा कोड बेस है, यह सुनिश्चित नहीं है कि तेज गणना का उपयोग करके सरणी बदलने की कोशिश कर रहा हूं। मेरा मतलब है कि आपको लगता है कि ऐसा करने का सबसे अच्छा अभ्यास नहीं है, और बीच में मैं आपके सुझाए गए तरीके का प्रयास करूंगा। – Manoj

+0

यह सर्वोत्तम अभ्यास का सवाल नहीं है। आप इसे केवल इसलिए नहीं कर सकते क्योंकि यह एक अपवाद उठाएगा जैसा आप देख रहे हैं। ['यह दस्तावेज़ 'देखें (http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/ObjectiveC/Chapters/ocFastEnumeration.html)। जैसा कि मैंने पोस्ट किया कोड के लिए, यह एक फिक्स नहीं है। यह त्रुटि को दर्शाता है। हाँ, यदि आप एक अलग सरणी का उपयोग करने की कोशिश कर रहे हैं तो यह आगे बढ़ने के विकल्पों में से एक है। –

+0

हालांकि, अगर यह अचानक हो रहा है तो यह हालिया परिवर्तन होना चाहिए। डीबगर में 'बीटी' या' बैकट्रैक '(पूर्ण में) करके इसे जांचें। आउटपुट पोस्ट करें। आपके पास एक उचित विचार होगा जहां त्रुटि है। –

3

यहां एक समाधान की तलाश में आया और इस मुद्दे को हल करने के लिए मूल सरणी की प्रतिलिपि लेना समाप्त हो गया।

for (NSObject *object in [array copy]) { 
    if(condition) { 
     [array removeObject....] 
     break; 
    } 
} 
संबंधित मुद्दे