MapKit / Место менеджер аварий приложения при выгрузке вида

голоса
7

Я есть ошибка, когда мое приложение разбившийся «EXC_BAD_ACCESS», когда я нажимаю клавишу возврата на моей панели навигации и вид выгружается, которая имела MapKit (MAPview) и использовал Расположение Manager. Пытались в течение нескольких дней, чтобы исправить ошибку, и, наконец, пришел с исправлением для всех, кто приходит на эту проблему:

Добавьте этот код на свой dealloc

- (void)dealloc {
    mapView.delegate = nil;
    locationManager.delegate = nil;

    [mapView release];
    [locationManager release];
}
Задан 25/03/2010 в 05:08
источник пользователем
На других языках...                            


1 ответов

голоса
0

У меня был один тоже, :) И, да, это исправление на самом деле правильное исправление;

- (void)dealloc {
  mapView.delegate = nil;
  locationManager.delegate = nil;

  [mapView release];
  [locationManager release];
}

Что происходит за кулисами это:

  1. Вы попали в backkey. Это разгружает и в результате выпускает контроллер, который держит MAPview. Поскольку было весьма вероятно, только одной ссылки на контроллер будет dealloc'ed тогда.

  2. LocationManager, однако, вполне вероятно, до сих пор ссылается где-то в внутренних работах геопозиционирования.

  3. Если locationManager и / или MAPview Теперь разослать уведомление их соответствующим делегатом, они следуют неверный указатель. Что приведет к исключению EXC_BAD_ACCESS.

Да: nilling делегатов, которые указывают на себе всегда является хорошей идеей. Я хотел justed Apple, хотел бы добавить некоторые Automagic там.

Ответил 18/02/2012 в 15:04
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more