Функция GMSGeocoder reverseGeocodeCoordinate не работает в фоновом потоке

Я пытаюсь вызвать функцию reverseGeocodeCoordinate из класса GMSGeocoder из фонового потока. Но это не работает. Обработчик завершения не вызывается. Если я вызываю функцию из основного потока, она работает нормально. Но такой подход иногда замедляет работу приложения, так как эта функция будет вызываться постоянно. Есть ли способ вызвать функцию reverseGeocodeCoordinate из фонового потока?

Ниже мой текущий код.

DispatchQueue.main.async {
                let geoCoder = GMSGeocoder()
                geoCoder.reverseGeocodeCoordinate((coordinate), completionHandler: {
                    reverseGeoCodeResponse, error in
                    // processing
                 }
}

Этот код работает. Но если я изменю DispatchQueue.main на DispatchQueue.global(), завершениеHandler не будет вызвано. Я хочу вызвать этот API в фоновом режиме.


person Rounak Kiran    schedule 19.07.2021    source источник
comment
Отвечает ли это на ваш вопрос? GMSGeoCoder reverseGeocodeCoordinate: завершениеHandler: в фоновом потоке   -  person iphonic    schedule 19.07.2021
comment
Нет. Из какого потока вызывается функция checkCitiesWithCompletionBlock, в этой ссылке не указано. Я хочу вызвать эту функцию из фонового потока.   -  person Rounak Kiran    schedule 19.07.2021
comment
Пожалуйста, улучшите свой вопрос, предоставив некоторый код.   -  person de.    schedule 19.07.2021


Ответы (1)


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

Вам не нужно совершать вызовы в фоновом потоке или следить за тем, чтобы завершение выполнялось в основном потоке.

person Abizern    schedule 19.07.2021