нажмите «Назад» сразу после перемещения приложения с аварийным завершением карты в iPhone

#iphone #google-maps #crash

#iPhone #google-карты #сбой

Вопрос:

Я столкнулся со сценарием, в котором, если после немедленного перемещения карты, если я нажму на значок «Назад», пока карта не загружена полностью, приложение выйдет из строя.

Что я могу понять, так это то, что загрузка все еще продолжается, и я нажимаю назад, приложение освобождает контроллер, но карта Google загружается асинхронно в NSRunLoop (не уверен). Так что, возможно, проблема в том, что я не уверен.

Итак, кто-нибудь знает, в чем может быть проблема, и есть ли какой-либо способ решить эту проблему? Пожалуйста, прокомментируйте, если требуется дополнительное описание.

Комментарии:

1. Опубликуйте некоторый код, следуйте стеку трассировки.

2. Установка отладчика не приводит к сбою приложения, как если бы я отлаживал, карта загружалась полностью, тогда проблем не возникало. Есть ли какой-либо способ определить, полностью ли загружена карта или нет?

Ответ №1:

Похоже, что при закрытии представления объект, который является делегатом для завершенной загрузки карты, был освобожден, что привело к сбою с плохим доступом.

Хороший способ разобраться в этих типах сбоев — использовать инструменты (часть пакета Xcode для инструментов) и отправиться на охоту на зомби.

Комментарии:

1. да, я тоже думаю, что это проблема .. но есть ли что-нибудь, что сообщает нам, что карта еще не загружена, чтобы я мог отключить панель навигации и запретить пользователю возвращаться, пока карта не будет полностью загружена

Ответ №2:

Для всех, кто все еще ищет ответ

Что именно происходило, так это то, что события просмотра карты запускались, даже если контроллер был выпущен, что приводило к сбою в приложении.

Таким образом, решение заключается в том, что перед установкой значения objMKMapView равным нулю вам нужно установить значение objMKMapView.delegate равным нулю.