Поскольку есть несколько ситуаций, в которых я хотел бы извлечь контроллер представления из стека навигации, у меня есть один метод, который делает это, и он вызывается из трех разных мест.
- (void)dismissSelfCon {
NSLog(@"dismiss");
[locationManager stopUpdatingHeading];
[locationManager stopUpdatingLocation];
locationManager.delegate = nil;
mapView.delegate = nil;
[[NSNotificationCenter defaultCenter] removeObserver:self];
[[[Trail_TrackerAppDelegate appDelegate] navCon] popViewControllerAnimated:YES];
}
В одной ситуации, если на mapView размещена аннотация (я не уверен, что это определяющая характеристика, но я думаю, что это так), этот метод вызывается (и я уверен, что он вызывается, потому что @ "dismiss" выводится на консоль), но менеджер местоположений не прекращает отправку обновлений местоположений! Кроме того, поскольку для делегата не задано значение nil, приложение аварийно завершает работу, поскольку контроллер представления получает responsedsToSelector: от одного из объектов, делегатом которого он является.
Как это возможно?