0

我有一个搜索栏并从 Internet 搜索一些信息,然后从 url 启动一个 NSXMLParser,然后显示在 UITableView 中解析的信息,但在此过程中 UI 被阻止,如果我想取消搜索以进行另一个搜索,我可以't 而且我必须等待解析器完成,所以我的问题是如果它是正确的解决方案,我如何在另一个线程上执行,然后在必要时中止搜索以进行另一个搜索?...我知道 NSOperation 类但是然后这个类如何将信息提供给表格视图以显示数据?......以及我如何中止操作以执行另一个操作?

现在我这样做是为了进行搜索:

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

然后是请求方法,在另一个类中开始使用 NSXMLParser 进行搜索...

4

1 回答 1

0

为避免阻塞 UI,您可以使用

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

我对 NSOperation 的工作不多,但是从文档中,看起来您可以为操作设置一个完成块,您可以在其中调用类似

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

此外,NSOperation 有一个实例方法cancel,它似乎可以提供您正在寻找的东西,只要中止您的搜索方法。

于 2012-04-26T23:42:13.120 回答