Rimozione MKMapView annotazioni provoca perdite

voti
1

Ho bollito un insieme molto complesso di servizi web e ricerche fino al semplice codice seguente. Ho bisogno di essere in grado di aggiungere annotazioni a una mappa in risposta a una ricerca (o nel campione di seguito per il clic di un pulsante), quindi consentire all'utente di selezionare nuovamente il pulsante e ottenere un nuovo set di risultati. In realtà ci sarà un numero diverso, ma nel esempio semplificato, abbiamo sempre aggiungere un'annotazione al mapview. Credo che il mio codice dovrebbe rimuovere le annotazioni esistenti e aggiungerne uno nuovo, ma le perdite di 32 byte su seconda e successive spinte dei pulsanti. Che cosa mi manca? (O mantenere a seconda dei casi può essere!)

testViewController.h

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

@interface testViewController: UIViewController {
    MKMapView * MapView;
}

@fine

testViewController.m

- (id) initWithnibName: (NSString *) nibNameOrNil bundle: (NSBundle *) nibBundleOrNil {
    if (auto = [super initWithnibName: nibNameOrNil bundle: nibBundleOrNil]) {
        // inizializzazione personalizzato
        self.title = @ test;
    }
    ritornare sé;
}

- (void) storeLocationInfo: (CLLocationCoordinate2D) titolo loc: (NSString *) t sottotitolo: index (NSString *) st: (int) i {
    NSArray * annotazioni = [MapView annotazioni];
    [RemoveAnnotations MapView: annotazioni];

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

- (void) {viewDidLoad
    [Super viewDidLoad];
    UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithTitle: @ Aggiungi punto per mappare stile: obiettivo UIBarButtonItemStylePlain: azione di auto: @selector (addPushed)];
    [Self.navigationItem setRightBarButtonItem: barButton];
    [Rilascio 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 = auto;
    [Self.view insertSubview: MapView atIndex: 0];
    [Rilascio MapView];
}

- (void) {addPushed
    MKCoordinateRegion reg = mapView.region;
    [Auto storeLocationInfo: titolo reg.center: @ prezzo sottotitolo: @ titolo Indice: 1];
}

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

MyMark.h

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


@interface MyMark: NSObject <MKAnnotation> {
    CLLocationCoordinate2D coordinate;
    NSString * titolo;
    NSString * sottotitolo;
    int index;
}
@property (nonatomic, di sola lettura) CLLocationCoordinate2D coordinate;
@property (nonatomic, di sola lettura) int index;
@property (nonatomic, mantenere) NSString * titolo;
@property (nonatomic, mantenere) NSString * sottotitoli;
- (id) initWithCoordinate: (CLLocationCoordinate2D) coordina;
- (id) setCoordinate: (CLLocationCoordinate2D) coordina;
- (id) setTitle: (NSString *) t sottotitolo: index (NSString *) st: (int) i;

@fine

MyMark.m

#import MyMark.h


@implementation MyMark
@synthesize coordinate, indice;
titolo @synthesize, sottotitolo;

- (id) initWithCoordinate: (CLLocationCoordinate2D) c {
    coordinare = c;
    NSLog (@ % f,% f, c.latitude, c.longitude);
    ritornare sé;
}

- (id) setCoordinate: (CLLocationCoordinate2D) c {
    coordinare = c;
    NSLog (@ % f,% f, c.latitude, c.longitude);
    ritornare sé;
}

- (id) setTitle: (NSString *) t sottotitolo: index (NSString *) st: (int) i {
    self.title = t;
    self.subtitle = st;
    index = i;
    ritornare sé;
}

- (void) {dealloc
    [Rilascio titolo];
    [Rilascio sottotitolo];
    [Super dealloc];
}
È pubblicato 03/09/2009 alle 11:26
fonte dall'utente
In altre lingue...                            


1 risposte

voti
4

Non stai rilasciando mymarkin storeLocationInfo:title:subtitle:index:. Sembra che il problema è un errore di battitura. La linea che legge

[MyMark release];

dovrebbe essere

[mymark release];

Si noti la differenza caso. La prima riga invia releasealla classe, non è l'istanza.

Risposto il 29/09/2009 a 17:16
fonte dall'utente

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