Удаление MKMapView аннотаций вызывает утечку

голоса
1

Я вареные очень сложный набор веб-сервисов и поиска до простого следующего кода. Мне нужно, чтобы иметь возможность добавлять аннотации к карте в ответ на поиск (или в образце ниже, чтобы нажатие одной кнопки), затем позволяют пользователю нажать на кнопку еще раз и получить новый набор результатов. На самом деле там будет разное количество, но в упрощенном примере, мы всегда добавить одну аннотацию к MapView. Я считаю, что мой код должен удалить существующие аннотации и добавить новый, но утечка 32 байт на второй и последующие кнопки толчками. Что мне не хватает? (Или сохранение в зависимости от обстоятельств может быть!)

testViewController.h

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

@interface testViewController: UIViewController {
    MKMapView * MAPview;
}

@конец

testViewController.m

- (ID) initWithNibName: (NSString *) nibNameOrNil расслоение: (NSBundle *) nibBundleOrNil {
    если (само = [супер initWithNibName: nibNameOrNil расслоение: nibBundleOrNil]) {
        // инициализация пользовательского
        self.title = @ тест;
    }
    Самовозврат;
}

- (недействительными) storeLocationInfo: (CLLocationCoordinate2D) Название LOC: (NSString *) т субтитров: (NSString *) -й индекс: (INT) я {
    NSArray * аннотации = [MapView аннотации];
    [MapView removeAnnotations: аннотации];

    MyMark * mymark = [[MyMark Alloc] initWithCoordinate: LOC];
    [MapView addAnnotation: mymark];
    [MyMark релиз];
}

- (недействительными) viewDidLoad {
    [Супер viewDidLoad];
    UIBarButtonItem * barButton = [[UIBarButtonItem Alloc] initWithTitle: @ Добавить точку на карте стиль: цель UIBarButtonItemStylePlain: само действие: @selector (addPushed)];
    [Self.navigationItem setRightBarButtonItem: barButton];
    [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 = самостоятельно;
    [Self.view insertSubview: MapView atIndex: 0];
    [Выпуск MapView];
}

- (недействительными) addPushed {
    MKCoordinateRegion р = mapView.region;
    [Само storeLocationInfo: название reg.center: @ цена подзаголовок: @ название индекс: 1];
}

- (недействительными) dealloc {
    [Супер dealloc];
}

MyMark.h

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


@interface MyMark: NSObject <MKAnnotation> {
    CLLocationCoordinate2D координат;
    NSString * название;
    NSString * подзаголовок;
    INT индекс;
}
@property (неатомическое, только для чтения) CLLocationCoordinate2D координат;
@property (неатомический, только для чтения) индекс INT;
@property (неатомическое, сохранить) NSString * название;
@property (неатомические, сохраняет) NSString * субтитры;
- (ID) initWithCoordinate: (CLLocationCoordinate2D) координат;
- (ID) setCoordinate: (CLLocationCoordinate2D) координат;
- (ID) SetTitle: (NSString *) т субтитров: (NSString *) -й индекс: (INT) я;

@конец

MyMark.m

#import MyMark.h


@implementation MyMark
@synthesize координат, индекс;
@synthesize названия, субтитры;

- (ID) initWithCoordinate: (CLLocationCoordinate2D) С {
    координат = с;
    NSLog (@ % F% F, c.latitude, c.longitude);
    Самовозврат;
}

- (ID) setCoordinate: (CLLocationCoordinate2D) С {
    координат = с;
    NSLog (@ % F% F, c.latitude, c.longitude);
    Самовозврат;
}

- (ID) SetTitle: (NSString *) т субтитров: (NSString *) -й индекс: (INT) я {
    self.title = т;
    self.subtitle = й;
    Индекс = я;
    Самовозврат;
}

- (недействительными) dealloc {
    [Название релиз];
    [Субтитры релиз];
    [Супер dealloc];
}
Задан 03/09/2009 в 11:26
источник пользователем
На других языках...                            


1 ответов

голоса
4

Вы не отпуская mymarkв storeLocationInfo:title:subtitle:index:. Похоже , проблема опечатка. Линия , которая читает

[MyMark release];

должно быть

[mymark release];

Отметим разницу случай. Первая линия посылает releaseк классу, а не экземпляра.

Ответил 29/09/2009 в 17:16
источник пользователем

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