Как мне дождаться завершения определенного метода в другом методе? - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть метод (myMethod) в классе (myClass), который использует CLLocationManager для запускаMonitoringSignificantLocationChanges ().MyClass является делегатом CLLocationManager, и я реализовал метод didUpdateToLocation ().

Что я хочу сделать, это вызвать startMonitoringSignificantLocationChanges () из myMethod, то после того, как didUpdateToLocation () был вызван и завершен, я хочупродолжить работу в моем методе.Это возможно?

Ответы [ 2 ]

7 голосов
/ 13 февраля 2012

Я не скажу, что это невозможно, но я настоятельно призываю вас принять асинхронную природу того, как это работает, и найти другой способ сделать то, что вы пытаетесь сделать.Как разделить myMethod на части «до» и «после», и пусть ваш делегат вызовет «после».Это действительно распространенный шаблон в Какао / iOS, и в конечном итоге вы будете более счастливы, не сражаясь с фреймворком.

Это особенно true, если myMethod работаетв главном потоке, потому что блокировка этого потока во время ожидания обновления местоположения заблокирует весь ваш пользовательский интерфейс.Слишком долго, и система убьет ваше приложение.

1 голос
/ 13 февраля 2012

Нет, это не так, но вам это не нужно. Просто продолжите свою функциональность в didUpdateToLocation, как только вы получите необходимые данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...