2013-02-16 54 views
6

का उपयोग करते समय मैं EXC_BAD_ACCESS कोड = 2 को कैसे डिबग कर सकता हूं, मुझे EXC_BAD_ACCESS कोड = 2 को हल करने के तरीके के बारे में बहुत सारे धागे दिखाई देते हैं, और आम सहमति यह है कि मैं अपनी सरणी या किसी ऑब्जेक्ट को एक्सेस करने का प्रयास कर रहा हूं मेरे सरणी के बाद मैंने इसे पहले से ही जारी कर दिया है। मैं देखता हूं कि ज्यादातर समय समाधान लगता है कि उनमें से बहुत से कोड [ऑब्जेक्ट] को उनके कोड में छोड़ देते हैं। मेरे लिए समस्या यह है कि मेरे पास कोई रिलीज कॉल नहीं है, क्योंकि मैं एआरसी का उपयोग कर रहा हूं।एआरसी

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

मुझे पता चला है कि बहुत सारे धागे कहने लगते हैं कि मुझे समस्या का स्रोत खोजने में मदद के लिए NSZombiesEnabled चालू करना चाहिए।

लाश सक्षम होने से पहले मेरा ऐप पूरी तरह से कोई त्रुटि या चेतावनी के साथ निर्माण और चलाएगा। लेकिन जैसे ही आप सिम्युलेटर में एक बटन को छूते हैं, यह क्रैश हो जाएगा।

लाश चालू करने के बाद, ऐप अभी भी कोई त्रुटि के साथ बनाता है और चलाता है, लेकिन अब सिम्युलेटर दिखाई देने पर यह क्रैश हो जाता है, और अब एक्सकोड अब ट्रेड 1 के तहत डीबग नेविगेटर पर स्विच करता है, वहां 100,000 से अधिक प्रविष्टियां सूचीबद्ध हैं और प्रत्येक जिस पर आप क्लिक करते हैं वह मुख्य विंडो में कुछ सामान दिखाता है, जिसे मैं नहीं जानता कि इसका क्या अर्थ है।

तो, अब मैं क्या करूँ? मैंने लाश चालू कर दिए हैं, और फिर से दौड़ते हैं, मुझे स्क्रीन में सामान का एक गुच्छा दिखाई देता है, लेकिन वास्तव में यह नहीं पता कि इसके सिर या पूंछ कैसे बनाना है। मैंने एक स्क्रीन शॉट पोस्ट करने की कोशिश की, लेकिन मेरे पास अभी तक ऐसा करने का अधिकार नहीं है।

+0

हमें मदद करने में सक्षम होने के लिए कुछ कोड चाहिए। EXC_BAD_ACCESS लाइन के आस-पास कोड शामिल करना सुनिश्चित करें। एआरसी के साथ, एआरसी द्वारा कई मेमोरी से संबंधित त्रुटियों को स्वचालित रूप से ख्याल रखा जाता है क्योंकि यह आवंटित करता है और रिलीज़ करता है और ओवरराइज नहीं करता है। ऐसा कहा जाता है कि, कोड तर्क के आधार पर, यह हो सकता है। तो कृपया कोड पोस्ट करें। – Spectravideo328

+0

एक गिथब खाता जोड़ा गया जिसमें इसमें सभी परियोजनाएं हैं। अब आप सबकुछ देख सकते हैं। इसे यहां देखें: https://github.com/jonathan3087/Matchismo – jonathan3087

उत्तर

18

मैंने आपके स्रोत कोड को देखा और समस्या पाई। self.game पर numberOfMatchingCards प्रॉपर्टी को सेट करने का प्रयास कर रहे हैं, जबकि आप game आलसी लोडिंग के मध्य में हैं, एक अनंत लूप बनाते हैं। आपका self.game.numberOfMatchingCards एक नया गेम लोड करने का प्रयास करने जा रहा है क्योंकि आपने अपने सेटटर के समय तक गेम को तुरंत चालू नहीं किया है। बस

- (IBAction)cardModeChanged:(UISegmentedControl *)sender { 
    switch ([sender selectedSegmentIndex]) { 
     case 0: 
      _game.numberOfMatchingCards = 2; 
      break; 
     case 1: 
      _game.numberOfMatchingCards = 3; 
      break; 
     default: 
      _game.numberOfMatchingCards = 2; 
      break; 
    } 
} 

मुझे यकीन है कि यह आपके बुरा पहुँच मुद्दे का समाधान होगा नहीं कर रहा हूँ करने के लिए

- (IBAction)cardModeChanged:(UISegmentedControl *)sender { 
    switch ([sender selectedSegmentIndex]) { 
     case 0: 
      self.game.numberOfMatchingCards = 2; 
      break; 
     case 1: 
      self.game.numberOfMatchingCards = 3; 
      break; 
     default: 
      self.game.numberOfMatchingCards = 2; 
      break; 
    } 
} 

बदलने के लिए, लेकिन यह डिबग नाविक में कई प्रविष्टियों का कारण है। अगर आपको अभी भी इसे ठीक करने के बाद खराब पहुंच समस्या है तो मुझे बताएं। यह याद रखना महत्वपूर्ण है कि भले ही आप एआरसी का उपयोग कर रहे हों, फिर भी ऑब्जेक्ट्स रिलीज़ हो जाते हैं (जब उनका संदर्भ शून्य पर गिर जाता है)।

+0

इससे समस्या ठीक हुई, मुझे अब अनंत लूप नहीं मिला है जो डीबग नेविगेटर में कई प्रविष्टियों का कारण बन रहा था, जैसा कि आपने कहा था। मैंने EXC_BAD_ACCESS समस्या का भी समाधान किया। तो अब, मुझे एक साफ निर्माण मिल रहा है और अब चेतावनी के साथ कोई त्रुटि नहीं है। इसे देखने में आपके समय के लिए धन्यवाद, मैं अपने बालों को खींच रहा था। – jonathan3087

+0

कोई समस्या नहीं है। खुशी है सब कुछ काम कर रहा है! – enjayem