MKMapView एनोटेशन निकाला जा रहा है लीक का कारण बनता है

वोट
1

मैं सरल निम्नलिखित कोड के लिए नीचे वेब सेवाओं और खोजों के एक बहुत जटिल सेट उबला हुआ है। मैं एक खोज के जवाब में एक नक्शा में टिप्पणियां जोड़ने में सक्षम होना चाहिए (या एक बटन क्लिक करने के लिए नीचे दिए नमूने में), तो फिर बटन पर क्लिक करें और परिणाम का एक नया सेट प्राप्त करने के लिए उपयोगकर्ता की अनुमति है। हकीकत में एक अलग संख्या नहीं होगा, लेकिन सरल उदाहरण में, हम हमेशा MapView करने के लिए एक टिप्पणी जोड़ने। मेरा मानना ​​है कि मेरे कोड मौजूदा एनोटेशन बाहर निकालना और एक नया जोड़ना चाहिए, लेकिन यह दूसरे और बाद के बटन धक्का पर 32 बाइट्स लीक। मैं क्या खो रहा हूँ ? (या बनाए रखने जैसा भी मामला हो!)

testViewController.h

#import <UIKit / UIKit.h>
#import <MapKit / MapKit.h>
#import MyMark.h

@interface testViewController: UIViewController {
    MKMapView * MapView;
}

@समाप्त

testViewController.m

- (आईडी) initWithNibName: (NSString *) nibNameOrNil बंडल: (NSBundle *) nibBundleOrNil {
    अगर (स्वयं = [सुपर initWithNibName: nibNameOrNil बंडल: nibBundleOrNil]) {
        // कस्टम आरंभीकरण
        self.title = @ परीक्षण;
    }
    लौट स्वयं;
}

- (शून्य) storeLocationInfo: (CLLocationCoordinate2D) loc शीर्षक: (NSString *) टी उपशीर्षक: (NSString *) सेंट सूचकांक: (int) मैं {
    NSArray * एनोटेशन = [MapView एनोटेशन];
    [MapView removeAnnotations: एनोटेशन];

    MyMark * mymark = [[MyMark alloc] initWithCoordinate: loc];
    [MapView addAnnotation: mymark];
    [MyMark रिहाई];
}

- (शून्य) viewDidLoad {
    [सुपर viewDidLoad];
    UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithTitle: UIBarButtonItemStylePlain लक्ष्य: स्वयं कार्रवाई: शैली बिंदु नक्शे में जोड़ें @ @selector (addPushed)];
    [Self.navigationItem setRightBarButtonItem: barButton];
    [BarButton रिहाई];

    MapView = [[MKMapView alloc] initWithFrame: CGRectMake (0.0,0.0, self.view.frame.size.width, self.view.frame.size.height)];
    mapView.showsUserLocation = FALSE;
    mapView.delegate = आत्म;
    [Self.view insertSubview: MapView atIndex: 0];
    [MapView रिहाई];
}

- (शून्य) addPushed {
    MKCoordinateRegion reg = mapView.region;
    [आत्म storeLocationInfo: reg.center शीर्षक: @ कीमत उपशीर्षक: @ शीर्षक सूचकांक: 1];
}

- (शून्य) dealloc {
    [सुपर dealloc];
}

MyMark.h

#import <फाउंडेशन / Foundation.h>
#import <MapKit / MapKit.h>


@interface MyMark: NSObject <MKAnnotation> {
    CLLocationCoordinate2D बीच तालमेल की आवश्यकता
    * शीर्षक NSString;
    NSString * उपशीर्षक;
    पूर्णांक सूचकांक;
}
@property (nonatomic, रीड-ओनली) समन्वय CLLocationCoordinate2D;
@property (nonatomic, रीड-ओनली) पूर्णांक सूचकांक;
@property (nonatomic, को बनाए रखने) NSString * शीर्षक;
@property (nonatomic, को बनाए रखने) NSString * उपशीर्षक;
- (आईडी) initWithCoordinate: (CLLocationCoordinate2D) के बीच तालमेल की
- (आईडी) setCoordinate: (CLLocationCoordinate2D) के बीच तालमेल की
- (आईडी) setTitle: (NSString *) टी उपशीर्षक: (NSString *) सेंट सूचकांक: (int) मैं;

@समाप्त

MyMark.m

#import MyMark.h


@implementation MyMark
@synthesize समन्वय, सूचकांक;
@synthesize शीर्षक, उपशीर्षक;

- (आईडी) initWithCoordinate: (CLLocationCoordinate2D) ग {
    समन्वय = c;
    NSLog (@ % च,% च, c.latitude, c.longitude);
    लौट स्वयं;
}

- (आईडी) setCoordinate: (CLLocationCoordinate2D) ग {
    समन्वय = c;
    NSLog (@ % च,% च, c.latitude, c.longitude);
    लौट स्वयं;
}

- (आईडी) setTitle: (NSString *) टी उपशीर्षक: (NSString *) सेंट सूचकांक: (int) मैं {
    self.title = टी;
    self.subtitle = सेंट;
    सूचकांक = मैं;
    लौट स्वयं;
}

- (शून्य) dealloc {
    [शीर्षक रिलीज];
    [उपशीर्षक रिहाई];
    [सुपर dealloc];
}
03/09/2009 को 11:26
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
4

आप को रिहा नहीं कर रहे हैं mymarkमें storeLocationInfo:title:subtitle:index:। ऐसा लगता है कि समस्या की तरह एक टाइपिंग त्रुटि है। लाइन है कि पढ़ता

[MyMark release];

होना चाहिए

[mymark release];

नोट मामले अंतर। पहली पंक्ति भेजता releaseवर्ग, नहीं उदाहरण के लिए।

29/09/2009 को 17:16
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more