我在我的应用程序中有一个搜索功能,用户在textField中键入内容,并且随着文本更改,我正在搜索本地数据库并在表中填充数据。Objective-C - 取消线程?
搜索可能需要几秒钟的任何地方10之间1根据输入的文本,所以我决定使用一个线程。每当文本改变时,我想取消线程(如果已经运行),并用new关键字重新启动它。问题是根据文档调用取消不保证线程将被终止。那么这里的解决方案是什么?
有没有什么办法来杀死一个线程?
- (void)populateData
{
if (self.searchThread.isExecuting)
{
[self.searchThread cancel];
}
[self.searchThread start];
}
- (void)populateDataInBackground
{
@autoreleasepool
{
// get data from db
// populate table on main thread
}
}
有一行代码可以从数据库中获取数据,一行代码可以填充表格,我不知道我怎么能把它分成几块:) – aryaxt 2012-07-19 04:33:35
然后我想你只需要在这两行之间检查一下,我猜大部分工作都在第一步,表的更新是微不足道的,我怀疑你可以随意杀死任何事情,你可以在线程中调用exit,但文档警告不要,你可能只需要使用cancel作为是否更新表的标志。 – borrrden 2012-07-19 04:36:30