Пример приложения Apple XMLPerformance написан специально для демонстрации того, как анализировать XML с помощью синтаксического анализатора libxml2
SAX (через поток). Использование анализатора потока полезно для быстрых асинхронных обновлений, а также для поддержания низкого профиля памяти вашего приложения.
Если вы поместите данные XML в базовое хранилище данных и подключите свое табличное представление к NSFetchedResultsController
и его методам делегатов, вы можете заставить свою таблицу постоянно обновляться с помощью очень небольшого кода. Базовые данные и контроллер извлеченных результатов выходят далеко за рамки этого ответа, но вы можете выполнить поиск Stack Overflow и Google для получения дополнительной информации по этим темам.
Для простоты вы можете просто поместить свои данные в NSMutableArray
и перезагрузить табличное представление или определенные разделы и строки, когда состояние массива изменится, но вам придется самостоятельно управлять обновлениями табличного представления.
Обратите внимание, что за пределами модели данных обработка представления может быстро усложниться; нажатие на кнопку «назад» приведет к освобождению контроллера представления, а также любых связанных свойств, поэтому вам нужно быть осторожным, чтобы управлять отменой синтаксического анализа XML с вашего контроллера представления, а также управлять любой выделенной памятью для вашей модели данных, которая находится в контроллер представления. В противном случае вы получите утечки памяти или исключения из доступа к освобожденным объектам, как только контроллер представления будет полностью освобожден.
Чтобы упростить это для себя, вам нужно прочитать о NSOperation
, NSOperationQueue
и KVO, которые помогут вам отслеживать состояние операций и выполнять очистку до того, как контроллер представления отключится. Класс NSOperation
облегчает запуск заданий в фоновом режиме. Существуют и другие ручные способы выполнения потоков и блокировки, но они не так приятны и чисты, как NSOperation
.
Чтение Документация NSOperation
от Apple поможет вам в огромной степени, а также в создании небольших тестовых приложений, которые помогут вам освоиться с различными структурами и классами, связанными с переходом вашего приложения на новый уровень сложности.