Асинхронные вызовы (в частности, геокодирование iOS) - PullRequest
2 голосов
/ 25 декабря 2011

Мне интересно, как справиться с этой конкретной проблемой:

Я создаю объект места, который инициализируется с помощью географической пары широта-длинаЗатем я использую геокодер iOS, чтобы получить адрес для этой координаты.Я хочу установить этот адрес для одной из моих переменных экземпляра.Однако этот асинхронный вызов не завершается вовремя, поэтому, когда я создаю экземпляр своего объекта и пытаюсь отобразить адрес, это еще не было сделано.Какие существуют стратегии для решения этой и подобных проблем?

Спасибо!С Рождеством!

1 Ответ

1 голос
/ 25 декабря 2011

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

Все асинхронные запросы имеют методы делегирования / протокола, которые позволяют вам знать, когда запрос не удался или был успешным.Вы должны использовать NSNotification API и зарегистрировать любой объект, которому нужен адрес, для уведомления, которое запускается, когда объект завершает запрос.Когда объект получает уведомление, он может настроить свои представления или все, что ему нужно сделать.В методе requestDidFinish (или любом другом) вы должны отправить уведомление.

Ознакомьтесь с этой статьей для получения подробной информации (а также некоторых интересных материалов о потоках!): http://www.raywenderlich.com/4295/multithreading-and-grand-central-dispatch-on-ios-for-beginners-tutorial

...