MKMapView Anmerkungen Entfernen verursacht Leckagen

stimmen
1

Ich habe eine sehr komplexe Reihe von Web-Service und sucht eingekocht den einfachen folgenden Code ein. Ich muß in der Lage seine Anmerkungen zu einer Suche auf eine Karte als Reaktion hinzuzufügen (oder in der Probe unten an den Klick auf eine Schaltfläche), erlaubt dann der Benutzer die Taste erneut klicken und einen neuen Satz von Ergebnissen. In Wirklichkeit gibt es eine andere Zahl sein, aber in dem vereinfachten Beispiel, wir immer eine Anmerkung zu dem mapview hinzuzufügen. Ich glaube, mein Code sollte die vorhandenen Anmerkungen entfernen und eine neue hinzufügen, aber es leckt 32 Bytes auf den zweiten und nachfolgenden Taste drückt. Was vermisse ich ? (Oder halten wie der Fall sein kann!)

testViewController.h

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

@interface testViewController: UIViewController {
    MKMapView * mapView;
}

@Ende

testViewController.m

- (id) initWithNibName: (NSString *) nibNameOrNil Bundle: (NSBundle *) nibBundleOrNil {
    if (self = [super initWithNibName: nibNameOrNil Bundle: nibBundleOrNil]) {
        // Benutzerdefinierte Initialisierung
        self.title = @ test;
    }
    Rückkehr selbst;
}

- (void) storeLocationInfo: (CLLocationCoordinate2D) loc Titel: (NSString *) t Untertitel: (NSString *) st Index: (int) i {
    NSArray * Anmerkungen = [mapView Anmerkungen];
    [MapView RemoveAnnotations: Anmerkungen];

    MyMark * mymark = [[MyMark alloc] initWithCoordinate: loc];
    [MapView AddAnnotation: mymark];
    [MyMark Release];
}

- (void) {viewDidLoad
    [Super viewDidLoad];
    UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initwithtitle: @ Punkt hinzufügen Karte style: UIBarButtonItemStylePlain Ziel: Selbst Aktion: @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 = FALSE;
    mapView.delegate = self;
    [Self.view insertSubview: mapView atIndex: 0];
    [MapView Release];
}

- (void) {addPushed
    MKCoordinateRegion reg = mapView.region;
    [Self storeLocationInfo: reg.center Titel: @ Preis Untertitel: @ title index: 1];
}

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

MyMark.h

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


@interface MyMark: NSObject <MKAnnotation> {
    CLLocationCoordinate2D koordinieren;
    NSString * Titel;
    NSString * Untertitel;
    int index;
}
@property (nonatomic, nur lesbar) CLLocationCoordinate2D koordinieren;
@property (nonatomic, nur lesbar) int index;
@property (nonatomic behalten) NSString * Titel;
@property (nonatomic behalten) NSString * Untertitel;
- (id) initWithCoordinate: (CLLocationCoordinate2D) koordinieren;
- (id) setCoordinate: (CLLocationCoordinate2D) koordinieren;
- (id) setTitle: (NSString *) t Untertitel: (NSString *) st Index: (int) i;

@Ende

MyMark.m

#import MyMark.h


@implementation MyMark
@synthesize Koordinatenindex;
@synthesize Titel, Untertitel;

- (id) initWithCoordinate: (CLLocationCoordinate2D) c {
    Koordinate = c;
    NSLog (@ % f% f, c.latitude, c.longitude);
    Rückkehr selbst;
}

- (id) setCoordinate: (CLLocationCoordinate2D) c {
    Koordinate = c;
    NSLog (@ % f% f, c.latitude, c.longitude);
    Rückkehr selbst;
}

- (id) setTitle: (NSString *) t Untertitel: (NSString *) st Index: (int) i {
    self.title = t;
    self.subtitle = st;
    index = i;
    Rückkehr selbst;
}

- (void) {dealloc
    [Release];
    [Untertitel release];
    [Super dealloc];
}
Veröffentlicht am 03/09/2009 um 11:26
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
4

Sie sind nicht frei mymarkin storeLocationInfo:title:subtitle:index:. Es sieht aus wie das Problem ist ein Tippfehler ist. Die Zeile , die liest

[MyMark release];

sollte sein

[mymark release];

Notieren Sie sich den Fall Unterschied. Die erste Zeile sendet releasedie Klasse, nicht die Instanz.

Beantwortet am 29/09/2009 um 17:16
quelle vom benutzer

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