Ben aşağı basit aşağıdaki kodu web hizmetleri ve aramaların çok karmaşık bir dizi haşlanmış ettik. Bir arama sonucunda bir harita için ek açıklamalar eklemek gerekiyor (veya bir düğmeye tıklayarak Aşağıdaki örnekteki), sonra kullanıcı tekrar butonuna tıklayın ve sonuçların yeni set almak için izin verir. Gerçekte farklı bir numara olacak, ama basitleştirilmiş örnekte, her zaman MapView bir ek açıklama eklemek. Benim kod Mevcut ek açıklamaları kaldırmak ve yeni bir tane ekleyin gerektiğine inanıyoruz, ama ikinci ve sonraki düğme iter üzerinde 32 bayt sızdırıyor. Neyi kaçırıyorum ? (Duruma göre Veya istinat!)
testViewController.h
#import <UIKit / UIKit.h>
#import <MapKit / MapKit.h>
#import MyMark.h
@interface testViewController: UIViewController {
MKMapView * MapView;
}
@son
testViewController.m
- (id) initWithNibName: (NSString *) nibNameOrNil demeti: (NSBundle *) nibBundleOrNil {
Eğer (kendiliğinden = [süper initWithNibName: nibNameOrNil demeti: nibBundleOrNil]) {
// Özel başlatma
self.title = @ test;
}
kendini return;
}
- (void) storeLocationInfo: (CLLocationCoordinate2D) loc title: (NSString *) t altyazı: (NSString *) st endeksi: (int) i {
NSArray * ek açıklamalar = [MapView açıklamalar];
[MapView removeAnnotations: açıklamalar];
MyMark * mymark = [[MyMark alloc] initWithCoordinate: kon];
[MapView addAnnotation: mymark];
[MyMark sürüm];
}
- (void) viewDidLoad {
[Süper viewDidLoad];
UIBarButtonItem * barButton = [[UIBarButtonItem alloc] initWithTitle: UIBarButtonItemStylePlain hedefi: kendinden eylemi: tarzı eşleştirmek için nokta ekle @ @selector (addPushed)];
[Self.navigationItem setRightBarButtonItem: barButton];
[BarButton sürüm];
MapView = [[MKMapView alloc] initWithFrame: CGRectMake (0.0,0.0, self.view.frame.size.width, self.view.frame.size.height)];
mapView.showsUserLocation = YANLIŞ;
mapView.delegate = öz;
[Self.view insertSubview: MapView atIndex: 0];
[MapView sürüm];
}
- (void) addPushed {
MKCoordinateRegion reg = mapView.region;
[Öz storeLocationInfo: reg.center title: @ fiyat altyazı: @ title endeksi: 1];
}
- (void) dealloc {
[Süper dealloc];
}
MyMark.h
#import <Vakfı / Foundation.h>
#import <MapKit / MapKit.h>
@interface MyMark: NSObject <MKAnnotation> {
koordine CLLocationCoordinate2D;
* Başlık NSString;
* Altyazı NSString;
int indeksi;
}
@ özelliği (nonatomic, salt okunur) koordinat CLLocationCoordinate2D;
@ özelliği (nonatomic, salt okunur) int indeksi;
@ özelliği (nonatomic, muhafaza) NSString * başlık;
@ özelliği (nonatomic, muhafaza) NSString * alt başlık;
- (id) initWithCoordinate: (CLLocationCoordinate2D) koordine eder;
- (id) setCoordinate: (CLLocationCoordinate2D) koordine eder;
- (id) setTitle: (NSString *) t altyazı: (NSString *) st endeksi: (int) i;
@son
MyMark.m
#import MyMark.h
@implementation MyMark
@synthesize, dizin koordinat;
@synthesize başlık, alt-başlık;
- (id) initWithCoordinate: (CLLocationCoordinate2D) C {
= C koordinat;
NSLog (@ % f% f c.latitude, c.longitude);
kendini return;
}
- (id) setCoordinate: (CLLocationCoordinate2D) C {
= C koordinat;
NSLog (@ % f% f c.latitude, c.longitude);
kendini return;
}
- (id) setTitle: (NSString *) t altyazı: (NSString *) st endeksi: (int) i {
self.title = d;
self.subtitle = St;
indeksi = i;
kendini return;
}
- (void) dealloc {
[Başlıktaki sürüm];
[Altyazı sürüm];
[Süper dealloc];
}













