को ट्रैक करने के लिए युक्तियाँ 2 साल पहले मैंने एक विशाल आईपैड ऐप लिखा था और अब मैं इसे वापस प्राप्त कर रहा हूं और इसे आईओएस 5 में अपग्रेड कर रहा हूं। यह थोड़ा गन्दा है क्योंकि यह मेरा पहला बड़ा आईपैड ऐप था।आईओएस यूआई
यह एक "सिंक" कदम है कि कई मिनट के लिए पिछले मई है और इन अतुल्यकालिक विधि कॉल कि जाने के लिए और एक यूआरएल से JSON को लाने और उन्हें कोर डेटा में डाल का एक समूह है। काफी बार, ऐप स्थिर हो जाएगा (यूआई उत्तरदायी नहीं है)।
इस ठंड को ट्रैक करने के लिए कुछ अच्छी तकनीकें क्या हैं? डीबगर उस सहायक नहीं है जब तक कि मुख्य थ्रेड पर कोड चल रहा न हो, आपके पास कोई उपयोग करने योग्य स्टैक ट्रेस नहीं है। ऐप अक्सर या तो ठीक नहीं होता है जो कुछ प्रकार की मृत ताला स्थिति का सुझाव देता है।
मैं निष्पादन रुका हुआ है एक बार मैं सत्यापित है कि यह जम गया:
यहाँ एक विशिष्ट उदाहरण है कि मदद कर सकता है है। ऐसा लगता है कि हर बार एक ही पंक्ति पर फ्रीज होता है - एक साधारण असाइनमेंट। यहाँ क्या हो रहा है? यह बहुत निराशाजनक है।
क्या यह कोर डेटा एक्सेस है जो इसका कारण बन रही है? किसी भी प्वाइंटर की अत्यधिक सराहना की जाएगी।
संपादित 29 जून 2012
Click here वर्ग है कि सभी बनाएं/अपडेट/कोर डेटा वस्तुओं का हटाया जा रहा करता है के स्रोत को देखने के लिए। मुझे बस इस ऐप में फ्रीजिंग/क्रैशिंग को रोकने की जरूरत है। मुझे इसकी गड़बड़ी पता है, यह मुझे भी क्रिंग करता है। मैंने इस 2 साल पहले लिखा था कि उद्देश्य-सी के किसी भी ज्ञान के साथ। मुझे इसे फिर से लिखना चाहिए, लेकिन मुझे यह काम 2 दिनों में काम करना और मेरे सिर से बाहर करना है। क्या कोई मुझे इस थ्रेड-सुरक्षित को तुरंत प्राप्त करने के लिए दृष्टिकोण पर पॉइंटर्स दे सकता है? क्या मैं प्रत्येक विधि को लपेट सकता हूं जो ग्रैंड सेंट्रल प्रेषण ब्लॉक कोड में NSManagedObjectContext को अद्यतन करता है?
जब यूआई अप्रतिबंधित हो जाता है तो ऐसा इसलिए होता है क्योंकि आप मुख्य थ्रेड पर कोड निष्पादित कर रहे हैं जिसे पृष्ठभूमि में निष्पादित किया जाना चाहिए। आप इस ठंड के दौरान ऐप को रोकने का प्रयास कर सकते हैं और उम्मीद है कि मुख्य धागे पर उपयोगी स्टैक ट्रेस प्राप्त करें ... लेकिन शायद आप नहीं करेंगे। इस परिदृश्य में मुझे वास्तव में उपयोगी पाया गया एकमात्र तरीका यह है कि आप जिस कोड को निष्पादित कर रहे हैं और कहां से वास्तव में महत्वपूर्ण है। सभी वेब अनुरोधों को जांचें और संबंधित कोड सिंक करें, और कहीं भी आपको लगता है कि प्रक्रिया गहन हो सकती है। – Matt
एक और विचार (डीबगर में रुकने और सर्वश्रेष्ठ की उम्मीद करने के बजाए) ऐप को इंस्ट्रूमेंट्स के तहत चलाने के लिए हो सकता है, जो आपको बताएगा कि कौन से तरीके सबसे अधिक उपयोग कर रहे हैं। मुझे इन मुद्दों को ठीक से डिबग करने के लिए बहुत उपयोगी पाया गया है। –
मैंने स्रोत से लिंक के साथ प्रश्न अपडेट किया - अगर इससे मदद मिलती है। –