アプリに検索機能があり、ユーザーがtextFieldを入力します。テキストが変更されると、ローカルデータベースを検索し、テーブルにデータを入力します。
入力したテキストにもよりますが、検索には1秒から10秒かかることがあるので、スレッドを使用することにしました。テキストが変更されるたびに、スレッドをキャンセルして(すでに実行されている場合)、新しいキーワードでスレッドを再開します。問題は、ドキュメントによると、cancelを呼び出しても、スレッドが強制終了されることを保証しないということです。では、ここでの解決策は何ですか?
スレッドを強制終了する方法はありますか?
- (void)populateData
{
if (self.searchThread.isExecuting)
{
[self.searchThread cancel];
}
[self.searchThread start];
}
- (void)populateDataInBackground
{
@autoreleasepool
{
// get data from db
// populate table on main thread
}
}