Vyjmutí MKMapView anotace způsobí úniky

hlasů
1

Jsem vaří velmi komplexní sadu webových služeb a hledání dolů na jednoduchém následující kód. Musím být schopni přidat poznámky do mapy v reakci na vyhledávání (nebo v níže uvedeném příkladu ke kliknutí na tlačítko), pak umožňují uživateli tlačítko znovu a získat novou sadu výsledků. Ve skutečnosti tam bude jiné číslo, ale ve zjednodušeném příkladu jsme vždy přidat jednu poznámku k MapView. Věřím, že můj kód by mělo odstranit stávající poznámky a přidat novou, ale nevrací 32 bajtů na druhém a dalších tlačítek tlačí. Co jsem chybí? (Nebo udržení případně může být!)

testViewController.h

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

@interface testViewController: UIViewController {
    MKMapView * MapView;
}

@konec

testViewController.m

- (id) initWithNibName: (NSString *) nibNameOrNil svazek: (NSBundle *) nibBundleOrNil {
    pokud (self = [Super initWithNibName: nibNameOrNil svazek: nibBundleOrNil]) {
        // Vlastní inicializace
        self.title = @ test;
    }
    vrátit sebe;
}

- (void) storeLocationInfo: (CLLocationCoordinate2D) Název loc: (NSString *) t titulků: (NSString *) st index: (int) i {
    NSArray * anotace = [MapView anotace];
    [MapView removeAnnotations: poznámky];

    MyMark * mymark = [[MyMark alloc] initWithCoordinate: loc];
    [MapView addAnnotation: mymark];
    [MyMark zpráva];
}

- (void) viewDidLoad {
    [Super viewDidLoad];
    UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithTitle: @ Přidat místo na mapu styl: UIBarButtonItemStylePlain cíl: vlastní akce: @selector (addPushed)];
    [Self.navigationItem setRightBarButtonItem: barButton];
    [BarButton zpráva];

    MapView = [[MKMapView alloc] initWithFrame: CGRectMake (0.0,0.0, self.view.frame.size.width, self.view.frame.size.height)];
    mapView.showsUserLocation = FALSE;
    mapView.delegate = samostatně;
    [Self.view insertSubview: MapView atIndex: 0];
    [MapView zpráva];
}

- (void) addPushed {
    MKCoordinateRegion reg = mapView.region;
    [Vlastní storeLocationInfo: Název reg.center: @ cena nadpis: @ název index: 1];
}

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

MyMark.h

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


@interface MyMark: NSObject <MKAnnotation> {
    CLLocationCoordinate2D souřadnic;
    NSString * hlavy;
    NSString * titulky;
    int index;
}
@property (nonatomic, pouze pro čtení) CLLocationCoordinate2D souřadnic;
@property (nonatomic, pouze pro čtení) int index;
@property (nonatomic, ponechat) Název NSString *;
@property (nonatomic, ponechat) NSString * titulky;
- (id) initWithCoordinate: (CLLocationCoordinate2D) koordinuje;
- (id) setCoordinate: (CLLocationCoordinate2D) koordinuje;
- (id) setTitle: (NSString *) t titulků: (NSString *) st index: (int) i;

@konec

MyMark.m

#import MyMark.h


@implementation MyMark
@synthesize souřadnic, index;
@synthesize název nadpis;

- (id) initWithCoordinate: (CLLocationCoordinate2D) c {
    koordinovat = c;
    NSLog (@ % F,% f, c.latitude, c.longitude);
    vrátit sebe;
}

- (id) setCoordinate: (CLLocationCoordinate2D) c {
    koordinovat = c;
    NSLog (@ % F,% f, c.latitude, c.longitude);
    vrátit sebe;
}

- (id) setTitle: (NSString *) t titulků: (NSString *) st index: (int) i {
    self.title = t;
    self.subtitle = st;
    index = i;
    vrátit sebe;
}

- (void) dealloc {
    [Uvolnění název];
    [Uvolnění titulků];
    [Super dealloc];
}
Položena 03/09/2009 v 11:26
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
4

Nejste uvolnění mymarkv storeLocationInfo:title:subtitle:index:. Vypadá to, že tento problém je překlep. Řádek, který čte

[MyMark release];

mělo by

[mymark release];

Všimněte si případovou rozdíl. První řádek posílá releasedo třídy, ne instance.

Odpovězeno 29/09/2009 v 17:16
zdroj uživatelem

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