eliminar / agregar anotaciones a mapview causa pérdidas de memoria

He estado tratando de deshacerme de las pérdidas de memoria en la vista de mapa. Estoy usando la clase de pin de mapa personalizado. Todo funciona, pero el problema es que necesito filtrar los resultados de la vista de mapa. cuando elimino todas las anotaciones de vista de mapa y agrego resultados filtrados, la herramienta de rendimiento encuentra fugas. pero en esta clase mapPin que estoy usando, se usan de forma automática, por lo que deberían liberarse, pero no lo son. ¿Qué estoy haciendo mal

MapPin.h

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

@interface MapPin : NSObject<MKAnnotation> {
    CLLocationCoordinate2D coordinate;
    NSString * picture;
    NSInteger tag_number;
}

@property (nonatomic,assign) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;


- (id) initWithCoordinate:(CLLocationCoordinate2D) coord;
- (id) initWithCoordinate:(CLLocationCoordinate2D) coord title:(NSString *) title;
- (id) initWithCoordinate:(CLLocationCoordinate2D) coord title:(NSString *) title subtitle:(NSString *) subtitle;
- (id) initWithCoordinate:(CLLocationCoordinate2D) coord title:(NSString *) title subtitle:(NSString *) subtitle image:(NSString *) pic;
- (id) initWithCoordinate:(CLLocationCoordinate2D) coord title:(NSString *) title subtitle:(NSString *) subtitle image:(NSString *) pic num:(NSInteger) number;
- (void) setPic:(NSString *) picture;
- (NSString* ) getPic;

- (void) setNum:(NSInteger) tag_number;
- (NSInteger ) getNum;

@end

MapPin.m

#import "MapPin.h"


@implementation MapPin

@synthesize coordinate = _coordinate;
@synthesize title = _title;
@synthesize subtitle = _subtitle;


- (id) initWithCoordinate:(CLLocationCoordinate2D) coord
{
    return [self initWithCoordinate:coord title:@""];
}

- (id) initWithCoordinate:(CLLocationCoordinate2D) coord title:(NSString *) title {
    return [self initWithCoordinate:coord title:title subtitle:@""];

}
- (id) initWithCoordinate:(CLLocationCoordinate2D) coord title:(NSString *) title subtitle:(NSString *) subtitle {
    return [self initWithCoordinate:coord title:title subtitle:subtitle image:@""];}

- (id) initWithCoordinate:(CLLocationCoordinate2D) coord title:(NSString *) title subtitle:(NSString *) subtitle image:(NSString *) pic{
    MapPin * me = [[[MapPin alloc] init] autorelease];
    me.coordinate = coord;
    me.title = title;
    me.subtitle = subtitle;

    [me setPic:pic];

    return me;
}

- (id) initWithCoordinate:(CLLocationCoordinate2D) coord title:(NSString *) title subtitle:(NSString *) subtitle image:(NSString *) pic num:(NSInteger) number{
    MapPin * me = [[[MapPin alloc] init] autorelease];
    me.coordinate = coord;
    me.title = title;
    me.subtitle = subtitle;

    [me setPic:pic];
    [me setNum:number];
    return me;
}

- (void) setPic:(NSString*) pic {
    picture = pic;
}

- (NSString * ) getPic{
    return picture;
}

- (void) setNum:(NSInteger) number {
    tag_number = number;

}

- (NSInteger ) getNum{
    return tag_number;
}

@end

Respuestas a la pregunta(2)

Su respuesta a la pregunta