Sé que este error tiene algo que ver con la gestión de la memoria, pero debo admitir que estoy perplejo. ¡Ha estado programando en el objetivo c durante aproximadamente 3 semanas y todo este manejo de la memoria es confuso! Lo que básicamente está sucediendo es que tengo esta vista de mapa en una vista de tabla. Al hacer clic en el botón Atrás para salir de la vista del mapa y volver al menú principal, aparece el error anterior. Aquí es el código del archivo de cabeceraEXC_BAD_ACCESS (código = 1) Error en Xcode
#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
@interface MapViewController : UIViewController <MKMapViewDelegate> {
IBOutlet MKMapView* mapView;
BOOL locate;
}
@property (nonatomic, retain) IBOutlet MKMapView* mapView;
@end
y el archivo de implementación
#import "MapViewController.h"
@implementation MapViewController
@synthesize mapView;
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
mapView = [[MKMapView alloc] initWithFrame:self.view.frame];
mapView.delegate=self;
mapView.showsUserLocation = YES;
[self.view addSubview:mapView];
[self.mapView.userLocation addObserver:self
forKeyPath:@"location"
options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld)
context:nil];
locate = YES;
}
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (locate == YES) {
MKCoordinateRegion region;
region.center = self.mapView.userLocation.coordinate;
MKCoordinateSpan span;
span.latitudeDelta = 0.1;
span.longitudeDelta = 0.1;
region.span = span;
[self.mapView setRegion:region animated:YES];
locate = NO;
}
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)dealloc {
[super dealloc];
[mapView release];
[self.mapView.userLocation removeObserver:self forKeyPath:@"location"];
[self.mapView removeFromSuperview];
self.mapView = nil;
}
@end
¿Alguien puede arrojar algo de luz para mí? :)
He intentado comentar varias líneas de código para ver si puedo resolverlo, pero es lo mismo cada vez, ya que dije que soy bastante nuevo en esto así que cualquier ayuda, incluso con la depuración, sería apreciada :) (Lamento ser un despistado dolor en la parte posterior lol) – Craig