2010-07-14 10 views
8

मैं एक iPhone अनुप्रयोग पर काम कर रहा हूँ, और मैं इस अजीब लॉग कभी कभी हो गया, जब एक नक्शे से छेड़छाड़ का उपयोग कर:iPhone प्रोग्रामिंग: अजीब त्रुटि एक MKMapView

ImageIO_Free: ptr 0xdf0f000 got double released??? (16384 bytes) 

अगर मैं चारों ओर खेलने countinue, अनुप्रयोग क्रैश हो सकता। मैंने इसे गुगल किया, लेकिन कुछ भी दिलचस्प नहीं मिला ... तो अजीब!

उत्तर

0

यह संभवतः एक चेतावनी है कि उसी ऑब्जेक्ट ने ImageIO_Free ऑब्जेक्ट को एक स्पष्ट या निहित बनाए रखने की तुलना में एक और रिलीज भेजा है। ImageIO_Free रिलीज़ हो गया है और बाद में दुर्घटनाग्रस्त होने के कारण अप्रत्याशित रूप से मर जाता है।

1

मेरी क्रिस्टल बॉल के बिना मैं केवल अनुमान लगा सकता हूं, लेकिन आप release डी मैन्युअल रूप से संभवतः autorelease के लिए चिह्नित किए गए थे।

Memory Management Programming Guide पढ़ें, खासकर Memory Management Rules! दो बार।

+0

ठीक है, यह पहली बात है जिसमें मैंने सोचा था। मैंने अपना कोड दो बार चेक किया है, कोई डबल रिलीज नहीं है ... अजीब बात यह है कि यह समय-समय पर ही होती है। मैं भी मानचित्र पर कुछ MKPinAnnotationView ऑब्जेक्ट्स हैं। –

+1

यह केवल अंततः हो रहा है इसका मतलब है कि एक रेसिंग स्थिति है। वैसे भी, आपका त्रुटि संदेश हमें बताता है कि एक डबल रिलीज है, आप हमें काम करने के लिए और कुछ नहीं देते हैं। आप क्या उम्मीद करते हैं? – hop

+0

हाँ, मुझे पता है, लेकिन समस्या किसी भी अन्य चीज़ के बिना एक साधारण MKMapView व्यू के साथ भी होती है। मैंने संबंधित .XIB के साथ एक नई फ़ाइल बनाकर कोशिश की, एक MKMapView जोड़ा, मानचित्र के साथ खेला और एक ही त्रुटि मिली। तो मैं सोच रहा था अगर यह ढांचे से संबंधित एक समस्या थी और यदि किसी और को एक ही समस्या का सामना करना पड़ा है। –

0

मैं इस समस्या को बेतरतीब ढंग से भी मिल गया है ...

ImageIO_Free: ptr 0xd700000 डबल जारी किया गया ??? (16384 बाइट्स) हैश: 0

पता नहीं कैसे ठीक करें। ढांचे के साथ एक समस्या होने लगता है।

4

वहाँ Apple डेवलपर मंचों है कि इस पर कुछ अधिक प्रकाश डालता है पर एक धागा है: "Map kit related crash?"

व्यक्ति जो पोस्ट करने के लिए प्रतिक्रिया व्यक्त की अधिक विस्तृत निदान जानकारी है और यह पता चलता है कि दुर्घटना हो रहा है एक अलग धागे में, फिर भी वह किसी भी धागे को नहीं बढ़ा रहा है जिसके परिणामस्वरूप वह व्यवहार/क्रैश हो रहा है।

आपको file a bug with Apple होना चाहिए।

0

यह सिर्फ मेरे साथ हुआ और मेरा मानना ​​है कि मेरे पास जवाब है।

समस्या मानचित्र दृश्य में एनोटेशन जोड़ने के साथ प्रतीत होती है। ऐसा लगता है कि जब आप किसी MKMapView उदाहरण पर "addAnnotations" को कॉल करते हैं, तो MKMapView ऑब्जेक्ट उन ऑब्जेक्ट्स को बरकरार नहीं रखता है। तो जब आप नक्शे के साथ खेलते हैं, और एनोटेशन को बाहर और बाहर ले जाते हैं, तो एनोटेशन को दोबारा प्रस्तुत करने का समय आता है, तो स्मृति जारी हो जाती है, और आपको EXC_BAD_ACCESS त्रुटि मिलती है।

इसे हल करने के लिए, केवल एनोटेशन के रूप में जोड़ने के लिए ऑब्जेक्ट्स को बनाए रखें। यह नक्शे वर्तमान एनोटेशन के एनएसएमयूटेबलएरे उदाहरण आवृत्ति के द्वारा पूरा किया जा सकता है। हर बार जब आप addAnnotations कहते हैं, तो उन ऑब्जेक्ट को इस बनाए रखा सरणी में भी जोड़ें और आपको पूरा सेट होना चाहिए।

अपने ज फ़ाइल में:

@interface MapViewController : TTModelViewController <MKMapViewDelegate, UIAlertViewDelegate> { 
    NSMutableArray *feeds; 
} 
@property (nonatomic, retain) NSMutableArray *feeds; 

अपने .m फ़ाइल में:

@synthesize feeds; 
// (release feeds in your dealloc) 

और तुम एनोटेशन जोड़ रहे हैं जब, कुछ इस तरह करते हैं:

if (self.feeds == nil) { 
    self.feeds = [NSMutableArray array]; 
} 
[self.feeds addObjectsFromArray:newPois]; // newPois is an array of annotations 
[mapView addAnnotations:newPois]; 

अब तक मेरे लिए काम करना अगर चीजें बदलती हैं तो अपडेट हो जाएगा। यदि आप मानचित्र दृश्य से वस्तुओं को हटाते हैं, तो आप शायद "मृत स्मृति" से बचने के लिए, इस फीड सरणी को सिंक में रखना चाहेंगे।"