0

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

ответ

0

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

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

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

Привет! Большое спасибо за ответ, но теперь, когда я попытался разобрать с помощью performSelectorInBackground, я получаю кучу ошибок NSAutoreleaseNoPool, хотя я вообще не использую autorelease в приложении. – dusker

+0

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

+0

какие ошибки они есть? Может быть, лучше спросить о них в отдельном вопросе, если решены проблемы с индикатором активности и утечками памяти? – Vladimir

Смежные вопросы