Это распространенная проблема при использовании объектов, которые получают вызовы делегатов. Проблема заключается в том, что после освобождения контроллера представления он все еще получает вызов от одного из своих объектов, как говорится в сообщении об ошибке. Вам необходимо переопределить метод viewDidUnload
(не говоря уже о dealloc
для некоторого управления памятью) вашего контроллера представления, и в него нужно поместить что-то вроде:
yourMapView.delegate = nil;
yourLocationManager.delegate = nil;
установив для делегатов этих объектов значение nil, они прекратят отправку обновлений назначенным им делегатам, когда этот контроллер представления будет выгружен, и, следовательно, ваше приложение перестанет падать.