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];
}













