यह सिर्फ मेरे साथ हुआ और मेरा मानना है कि मेरे पास जवाब है।
समस्या मानचित्र दृश्य में एनोटेशन जोड़ने के साथ प्रतीत होती है। ऐसा लगता है कि जब आप किसी 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];
अब तक मेरे लिए काम करना अगर चीजें बदलती हैं तो अपडेट हो जाएगा। यदि आप मानचित्र दृश्य से वस्तुओं को हटाते हैं, तो आप शायद "मृत स्मृति" से बचने के लिए, इस फीड सरणी को सिंक में रखना चाहेंगे।"
स्रोत
2010-09-28 19:13:49
ठीक है, यह पहली बात है जिसमें मैंने सोचा था। मैंने अपना कोड दो बार चेक किया है, कोई डबल रिलीज नहीं है ... अजीब बात यह है कि यह समय-समय पर ही होती है। मैं भी मानचित्र पर कुछ MKPinAnnotationView ऑब्जेक्ट्स हैं। –
यह केवल अंततः हो रहा है इसका मतलब है कि एक रेसिंग स्थिति है। वैसे भी, आपका त्रुटि संदेश हमें बताता है कि एक डबल रिलीज है, आप हमें काम करने के लिए और कुछ नहीं देते हैं। आप क्या उम्मीद करते हैं? – hop
हाँ, मुझे पता है, लेकिन समस्या किसी भी अन्य चीज़ के बिना एक साधारण MKMapView व्यू के साथ भी होती है। मैंने संबंधित .XIB के साथ एक नई फ़ाइल बनाकर कोशिश की, एक MKMapView जोड़ा, मानचित्र के साथ खेला और एक ही त्रुटि मिली। तो मैं सोच रहा था अगर यह ढांचे से संबंधित एक समस्या थी और यदि किसी और को एक ही समस्या का सामना करना पड़ा है। –