Добавление подпредставления, задерживается? - PullRequest
0 голосов
/ 09 марта 2010

Я действительно не знал, как озаглавить этот вопрос, но вот что действительно убивает меня: В моем приложении у меня есть UITableView, UISegmentedControl и UINavigationBar. Как только UISegmentedControl получает один из своих сегментов, я хочу показать UIActivityIndicatorView на UINavigationBar, а затем проанализировать XML-файл и представить результаты в таблице. Все работает почти так, как я хочу, за исключением одного, представление индикатора активности добавляется на панель навигации после завершения работы анализатора, даже если метод showLoading, который добавляет UIIndicatorView в UINavigationBar, получает до инициализации анализатора. Кто-нибудь может это объяснить? Есть ли что-то, что я мог бы пропустить? может быть, пользовательский интерфейс должен быть перерисован? Спасибо питер

1 Ответ

0 голосов
/ 09 марта 2010

Похоже, что вы анализируете ваш xml в основном потоке, и поэтому он блокируется для изменений пользовательского интерфейса. Попробуйте переместить анализ XML в отдельный поток (например, вызвав свой метод анализа с помощью -performSelectorInBackground:)

Редактировать: На самом деле вы (почти наверняка) неявно используете autorelease в своем приложении - так как многие стандартные функции возвращают автоматически выпущенные объекты. Когда вы выполняете свои функции в отдельном потоке, вам необходимо создать объект NSAutoreleasePool для обработки автоматически выпущенных объектов и предотвращения утечек памяти (см. Пулы автоматического освобождения в документации). Итак, ваша функция parseXML должна выглядеть так:

- (void)parseXML{
   NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
   ... //xml parsing routines etc
   [pool release];
}
...