Usuwanie MKMapView adnotacje powoduje przecieki

głosy
1

Ja gotuje bardzo skomplikowany zestaw usług internetowych i wyszukiwania w dół do prostego kodu następujący. Muszę być w stanie dodać adnotacje na mapie w poszukiwaniu odpowiedzi na (lub w próbce poniżej do kliknięcia przycisku), a następnie umożliwi użytkownikowi ponownie kliknij przycisk i dostać nowy zestaw wyników. W rzeczywistości nie będzie inny numer, ale w uproszczonym przykładzie, zawsze dodać jedną adnotację do MapView. Wierzę, że mój kod powinien usunąć istniejące adnotacje i dodawać nowe, ale przecieki 32 bajtów na drugim i kolejnych naciśnięć przycisków. Czego mi brakuje ? (Lub utrzymania w zależności od przypadku może być!)

testViewController.h

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

@interface testViewController: UIViewController {
    MKMapView * MapView;
}

@koniec

testViewController.m

- (ID) initWithNibName (NSString *) nibNameOrNil wiązki (NSBundle *) nibBundleOrNil {
    jeśli (samo = [bardzo initWithNibName: nibNameOrNil wiązka: nibBundleOrNil]) {
        // inicjalizacja klienta
        self.title = @ test;
    }
    powrót siebie;
}

- (void) storeLocationInfo (CLLocationCoordinate2D) loc tytułowy (NSString *) T napisy: wskaźnik (NSString *) st (int) i {
    NSArray * adnotacje = [MapView adnotacje];
    [RemoveAnnotations MapView: adnotacje];

    MyMark * mymark = [[MyMark Alloc] initWithCoordinate: loc];
    [MapView addAnnotation: mymark];
    [MyMark release];
}

- (void) viewDidLoad {
    [Bardzo viewDidLoad];
    UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithTitle: @ Dodaj punkt na mapie, styl: cel UIBarButtonItemStylePlain: działanie samodzielne: @selector (addPushed)];
    [Self.navigationItem setRightBarButtonItem: barButton];
    [BarButton release];

    MapView = [[MKMapView Alloc] initWithFrame: CGRectMake (0.0,0.0, self.view.frame.size.width, self.view.frame.size.height)];
    mapView.showsUserLocation = FAŁSZ;
    mapView.delegate = siebie;
    [Self.view insertSubview: MapView atIndex: 0];
    [MapView release];
}

- (void) addPushed {
    MKCoordinateRegion reg = mapView.region;
    [Self storeLocationInfo Tytuł reg.center: @ ceny napisy: @ Nazwa wskaźnik: 1];
}

- (void) dealloc {
    [Bardzo dealloc];
}

MyMark.h

#import <Foundation / Foundation.h>
#import <MapKit / MapKit.h>


@interface MyMark: NSObject <MKAnnotation> {
    CLLocationCoordinate2D współrzędnych;
    NSString * tytułowy;
    NSString * napisów;
    Indeks Int;
}
@property (nonatomic, tylko do odczytu) CLLocationCoordinate2D współrzędnych;
@property (nonatomic, tylko do odczytu) Indeks Int;
@property (nonatomic zachowują) NSString * tytułowy;
@property (nonatomic zachowują) NSString * napisów;
- (ID) initWithCoordinate (CLLocationCoordinate2D) współrzędnych;
- (ID) setCoordinate (CLLocationCoordinate2D) współrzędnych;
- (ID) setTitle (NSString *) T napisy: wskaźnik (NSString *) st (int) I;

@koniec

MyMark.m

#import MyMark.h


@implementation MyMark
@synthesize współrzędnych indeksu;
@synthesize tytuł napisów;

- (ID) initWithCoordinate (CLLocationCoordinate2D) C {
    współrzędnych = C;
    NSLog (@ % C,% f c.latitude, c.longitude);
    powrót siebie;
}

- (ID) setCoordinate (CLLocationCoordinate2D) C {
    współrzędnych = C;
    NSLog (@ % C,% f c.latitude, c.longitude);
    powrót siebie;
}

(NSString *) T napisy:: wskaźnik (NSString *) st (int) i {(ID) setTitle -
    self.title = T;
    self.subtitle = st;
    indeks = i;
    powrót siebie;
}

- (void) dealloc {
    [Nazwa release];
    [Napisów release];
    [Bardzo dealloc];
}
Utwórz 03/09/2009 o 11:26
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
4

Nie wypuszczamy mymarkw storeLocationInfo:title:subtitle:index:. Wygląda na to, że problem jest o pomyłkę. Linia, która czyta

[MyMark release];

powinno być

[mymark release];

Zauważ różnicę przypadek. Pierwsza linia wysyła releasedo klasy, a nie np.

Odpowiedział 29/09/2009 o 17:16
źródło użytkownik

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