由于 NavigationController,我有一个被推入的 ViewController(带有 MKMapView)。所以我有一个带有“后退”按钮的导航栏。单击该后退按钮,我收到一个错误:
2010-01-11 18:05:35.273 TestApp[147:207] MKUserLocation 类的实例 0x1758f0 正在被释放,而键值观察者仍向其注册。观察信息被泄露,甚至可能被错误地附加到其他对象上。在 NSKVODeallocateBreak 上设置断点以在调试器中停止。这是当前观察信息:(上下文:0x0,属性:0x17d600>)程序接收信号:“EXC_BAD_ACCESS”。
我用观察者实现了 viewDidLoad 方法:
- (void)viewDidLoad {
mapView = (MKMapView*)self.view;
mapView.delegate = self;
mapView.mapType = MKMapTypeHybrid;
mapView.showsUserLocation = YES;
// ...
[mapView.userLocation addObserver:self forKeyPath:@"location" options:0 context:NULL];
[super viewDidLoad];
}
我的交易:
- (void)dealloc {
[groupId release];
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
谁能告诉我这里有什么问题?我单击 NavBar 中的后退按钮,然后进入 dealloc 方法,然后它切换回更高的 ViewController 并抛出此错误。
非常感谢提前和最好的问候。