У меня тоже было это, :) И, да, это исправление на самом деле правильное;
- (void)dealloc {
mapView.delegate = nil;
locationManager.delegate = nil;
[mapView release];
[locationManager release];
}
Что происходит за кадром, так это:
Вы нажали клавишу возврата. Это выгружает и, следовательно, освобождает контроллер, который содержит mapView. Поскольку вполне вероятно, что только одна ссылка на контроллер будет освобождена, тогда.
LocationManager, однако, вполне вероятно, все еще упоминается где-то во внутренней работе Photos.
Если locationManager и / или mapView теперь отправляют уведомление соответствующему делегату, они следуют за неверным указателем. Что приведет к исключению EXC_BAD_ACCESS.
Да: обзывать делегатов, которые указывают на себя, всегда хорошая идея. Я просто хотел, чтобы Apple добавила туда немного автоматики.