2010-03-25 8 views
7

मेरे पास एक बग है जहां मेरे एप्लिकेशन ने "नेविचैड_एसीसीसीईएस" को क्रैश किया जब मैंने अपने नेविगेशन बार पर बैक कुंजी मारा और दृश्य को अनलोड किया गया जिसमें मैपकिट (मैप व्यू) था और स्थान प्रबंधक का उपयोग किया गया था। दिन बग को ठीक है और अंत में करने के लिए कोशिश की है कि इस समस्या को भर आता है किसी के लिए भी एक फिक्स के साथ आया था:नक्शाकिट/स्थान प्रबंधक दृश्य को अनदेखा करते समय ऐप क्रैश करता है

अपने dealloc

- (void)dealloc { 
    mapView.delegate = nil; 
    locationManager.delegate = nil; 

    [mapView release]; 
    [locationManager release]; 
} 
+0

धन्यवाद, आदमी! अजीब चीज यह है कि आप इसे सिम्युलेटर में पुन: पेश नहीं कर सकते हैं। –

+0

कृपया अधिक कार्यान्वयन विवरण प्रदान करें। यह कुछ obj की तरह दिखता है। पहले से ही जारी किया गया है बीटीडब्ल्यू, डीलोक में प्रतिनिधि को निंदा करने की अच्छी आदत है। – kompozer

+0

क्रैश लॉग देखे बिना वास्तव में बता सकते हैं। लेकिन ऐसा लगता है कि आप दो बार कुछ जारी कर रहे हैं। NSZombieEnabled जोड़ने का प्रयास करें, यह आपको बताएगा कि क्या आप स्मृति में कुछ एक्सेस करने का प्रयास कर रहे हैं जो पहले ही रिलीज़ हो चुका है। – CW0007007

उत्तर

0

मैं इस एक भी था के लिए इस कोड जोड़ें, :) और, हाँ , यह फिक्स वास्तव में एक उचित फिक्स है;

  1. आप backkey मारा:

    - (void)dealloc { 
        mapView.delegate = nil; 
        locationManager.delegate = nil; 
    
        [mapView release]; 
        [locationManager release]; 
    } 
    

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

  2. स्थान प्रबंधक, हालांकि, अभी भी भूगर्भलन के आंतरिक कार्यों में कहीं भी संदर्भित किया गया है।

  3. यदि स्थान प्रबंधक और/या नक्शा देखें अब अपने संबंधित प्रतिनिधि को एक अधिसूचना भेजें, तो वे एक अमान्य सूचक का अनुसरण कर रहे हैं। जिसके परिणामस्वरूप EXC_BAD_ACCESS अपवाद होगा।

हां: प्रतिनिधि जो स्वयं को इंगित करते हैं, हमेशा एक अच्छा विचार है। मैं चाहता था कि ऐप्पल वहां कुछ स्वैच्छिक जोड़ देगा।

संबंधित मुद्दे