मेरे iPhone ग्राहक अतुल्यकालिक अनुरोध के साथ भागीदारी का एक बहुत है, बहुत समय लगातार शब्दकोशों या सरणियों के स्थिर संग्रह संशोधित। नतीजतन, यह आम है मुझे बड़ा डेटा संरचनाओं जो अधिक समय लग निम्न त्रुटियों के साथ एक सर्वर से पुनः प्राप्त करने के लिए देखने के लिए:अतुल्यकालिक यूआरएल के साथ mutexes के iPhone उपयोग का अनुरोध करता है
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <NSCFArray: 0x3777c0> was mutated while being enumerated.'
आमतौर पर इसका अर्थ यह है कि सर्वर के दो अनुरोध डेटा जो कोशिश कर रहे हैं के साथ वापस आ एक ही संग्रह को संशोधित करें। जो मैं खोज रहा हूं वह इस हानिकारक त्रुटि से बचने के लिए मेरे कोड को व्यवस्थित तरीके से कैसे व्यवस्थित करने का एक ट्यूटोरियल/उदाहरण/समझ है। मुझे विश्वास है कि सही जवाब म्यूटेक्स है, लेकिन मैंने कभी भी व्यक्तिगत रूप से उनका उपयोग नहीं किया है।
यह NSURLConnection के साथ अतुल्यकालिक HTTP अनुरोध बनाने और उसके बाद प्रतिनिधिमंडल के एक साधन के रूप NSNotification सेंटर की मदद से एक बार अनुरोध पूरा कर रहे हैं का परिणाम है। जब अनुरोधों को फायरिंग करते हैं जो समान संग्रह सेट को म्यूट करते हैं, तो हमें इन टकराव मिलते हैं।
समस्या यह है कि 'पृष्ठभूमि' धागे स्पष्ट रूप से मेरे द्वारा बनाए गए नहीं हैं। वे एसिंक्रोनस NSURLConnection अनुरोधों का परिणाम हैं। मेरे पास कोड के माध्यम से मुख्य धागे से बात करने का कोई तरीका नहीं है। आपके अन्य सुझाव उपयोगी हैं हालांकि मैं इसकी सराहना करता हूं। – Coocoo4Cocoa
मेरा मानना है कि NSURLConnection के प्रतिनिधि को थ्रेड पर कॉल किया जाएगा जिसने लोड ऑपरेशन शुरू किया था, जरूरी नहीं कि थ्रेड जिसने ऑब्जेक्ट बनाया था। तो आप अपने प्रतिनिधि तरीकों में डेटा को जोड़ सकते हैं। – sbooth
हां! धन्यवाद यह मेरे लिए काम करता है। – Armanoide