2013-05-06 2 views
1

У меня есть приложение, где при запуске он проверяет положение пользователя, а затем получает погоду для этого места. В основном направление и скорость ветра.GCD в разных классах

Выполняет обычную проверку, чтобы увидеть, что у нее есть соединение Intenet, но я обнаружил, что при наличии соединения, но очень медленно приложение зависает на экране запуска (выполнение проверки при запуске).

У меня есть класс, который делает это, который вызывается при запуске, после которого загружается начальный экран. Оглядываясь, GCD кажется правильным путем, но могу ли я получить ответ, который будет отображаться на ярлыке в когда экран завершен с получением данных? Основной протектор ушел бы, или, скорее, обходил этот класс и дошел до главного экрана.

Должен ли я использовать что-то вроде Центра уведомлений, чтобы помочь обновить и перезагрузить ярлык?

Благодарим за любые мысли или фрагменты кода. Jorgen

PS. Я пытаюсь сохранить приложение iOS 5.1, чтобы сохранить старые iPads счастливыми.

+0

Как вы можете проверить подключение к Интернету? и почему? на последнем WWDC каждому разработчику было предложено пропустить эту часть и напрямую выполнить сетевую связь и обработать событие _no-connection_ в ветви обратной связи FALSE, потому что методы класса _Reachability_ очень медленны. – holex

+0

У меня есть метод, который проверяет, что я могу добраться до apple.com – Jorgen

ответ

0

GCD кажется правильным способом, но могу ли я получить ответ, который будет отображаться на ярлыке на главном экране, когда он закончит получение данных? Основной протектор ушел бы, или, скорее, обходил этот класс и дошел до главного экрана. Должен ли я, возможно, использовать что-то вроде Notification Center, чтобы помочь обновлению и повторной загрузке метки?

Да, я думаю, что вы на очень хорошем пути здесь. Давайте оставим эти два вопроса по отдельности, хотя:

  • После выполнения фоновой работы, по-прежнему в GCD, вы собираетесь вернуться на главной нить, потому что вы теперь хотите обновить интерфейс. Это легко и просто.

  • Если у вас есть проблема связи, уведомление может быть отличным решением. Вы можете транслировать необходимость обновлять эту метку, а , если правильный контроллер просмотра существует и прослушивает, он получит эту информацию.

    Сказав это, вы должны подумать о своей архитектуре, поскольку может быть лучший способ, чем уведомление. Как только вы вернетесь в основной поток, почему вы не находитесь в месте, где у вас есть способ узнать, существует ли правильный контроллер просмотра и что с ним нужно напрямую разговаривать. Я не говорю, что уведомление плохо/неправильно! Я сам использовал это решение, и уведомление - это стандартный способ возврата, скажем, NSOperation. Я просто говорю, подумайте.