2012-04-26 4 views
0

У меня есть панель поиска и поиск некоторой информации из Интернета, затем запустите NSXMLParser с URL-адреса, а затем отобразите информацию, анализированную в UITableView, но в этом процессе пользовательский интерфейс заблокирован, и если я хочу чтобы отменить поиск, чтобы сделать другой поиск, я не могу, и я должен дождаться завершения анализатора, поэтому мой вопрос заключается в том, как я могу выполнять другой поток, если это правильное решение, а затем прекратить поиск при необходимости другого поиска ? ... я знаю класс NSOperation, но как этот класс может затем предоставить информацию в виде таблицы для отображения данных? ... и как я могу прервать операцию для выполнения другой операции?Использовать NSXMLParser и NSOperation без блокировки UI

теперь я сделать это, чтобы сделать поиск:

[self performSelector:@selector(request:) withObject:searchText afterDelay:0.7]; 

затем метод запроса, начать в другом классе поиск с NSXMLParser ...

ответ

0

Чтобы избежать блокировки пользовательского интерфейса, вы должны использовать

[self performSelectorInBackground:@selector(request:) withObject:text];

Я не работал много с NSOperation, но из документации, это выглядит, как вы можете установить блок завершения для оперы ции, в которой можно было бы назвать что-то вроде

[self performSelectorOnMainThread:@selector(populateMyTable) withObject:nil waitUntilDone:NO];

Кроме того, NSOperation имеет метод cancel экземпляра, который, кажется, чтобы предложить то, что вы ищете, насколько прерывании ваш метод поиска.

+0

благодарит за ответ! – Piero

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