我在我的應用程序中有一個搜索功能,用戶在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