Эскиз архитектуры для стокового приложения iphone
В настоящее время я пытаюсь создать (упрощенное) стандартное приложение (например, встроенное в iphone). Я установил простой сервер с REST-интерфейсом, с которым мое приложение может общаться.
Однако я изо всех сил пытаюсь найти правильный / лучший способ для создания такого типа (потребителя потоковых данных) на iphone.
На данный момент лучше всего использовать таймер для регулярного извлечения полезной нагрузки xml с сервера (соединение асинхронное, но синтаксический анализ xml отсутствует, интерфейс иногда блокируется. Я немного стесняюсь программирования потоков, так как узнал некоторые тяжелые уроки на других платформах).
Я читал о веб-сокетах, но мне не ясно, если и как они поддерживаются на iphone.
Как бы вы это сделали?
Любая подсказка будет оценена, спасибо.
2 ответа
websockets не помогут вам - это технология на стороне сервера, позволяющая сделать сокет-подобный интерфейс поверх HTTP.
Если вы не хотите блокировать графический интерфейс, вам нужно использовать другой поток. Вы правы, что боитесь делать это, поэтому делитесь как можно меньше (желательно ничего) между двумя потоками. Используйте механизм передачи сообщений для получения информации из фонового потока в поток пользовательского интерфейса.
Посмотрите на ActorKit: http://landonf.bikemonkey.org/code/iphone/ActorKit_Async_Messaging.20081203.html
Посмотрите на этот вопрос.
Это говорит об асинхронных против синхронных соединений. Вы захотите использовать асинхронный вызов для получения ваших данных, чтобы не блокировать пользовательский интерфейс. Вы можете использовать это вместе с таймером опроса для получения ваших данных с сервера.
Вы можете найти больше информации о NSURLConnection в документации Apple здесь