Wiem, że ten błąd ma coś wspólnego z zarządzaniem pamięcią, ale muszę przyznać, że jestem zakłopotany! Programowanie w obiektywnym c przez około 3 tygodnie i całe to zarządzanie pamięcią jest mylące! W zasadzie dzieje się tak, że mam ten widok mapy w widoku tabeli. Po kliknięciu przycisku Wstecz, aby opuścić widok mapy i powrócić do menu głównego, pojawia się powyższy błąd. Oto kod z plikuEXC_BAD_ACCESS (code = 1) Błąd w 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
nagłówka i pliku wdrażania
#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
Czy ktoś może rzucić nieco światła na mnie? :)
Próbowałem komentowania różne linie kodu, aby sprawdzić, czy mógłbym to rozwiązać, ale za każdym razem jest to samo, ponieważ powiedziałem, że jestem całkiem nowy, więc każda pomoc, nawet przy debugowaniu, byłaby doceniona :) (Przykro mi być bez pojęcia ból w tylnej lol) – Craig