1

私のアプリには 5 つのモジュールがあり、各モジュールのデータは 5 つの異なるマネージド オブジェクトに格納されていました。ユーザーがキーワードを入力して、5 つのモジュールすべてでキーワードを検索できる検索ページを作成しました。検索バーのテキストが変更されるたびに、検索結果テーブルを更新して、一致するレコード数とモジュール名を表示しました。

したがって、検索バーを押すたびに、5 つのモジュールすべてから一致するデータ数を取得する必要があります。アプリのレコード数が最小限の場合、これは簡単です。しかし、私の場合、合計レコード数が非常に多いため、入力した検索ワードで 5 つのモジュールからデータを取得するのにかかる時間が非常に長くなり、アプリがフリーズしました。

スレッドの概念を iOS に実装する方法がまったくわからないので、Apple のスレッド化プログラミング ガイド同時実行プログラミングガイドを読んで学ぼうとしました。スレッドについてある程度の知識が得られたと思いますが、これらの概念をコードで実装しようとすると、やや複雑になります。

私の要件は、スレッドの概念を使用して呼び出す必要がある 5 つの関数があることです。関数が次のとおりであると考えてください。

function1() {...}
function2() {...}
function3() {...}
function4() {...}
function5() {...}

これらの 5 つの関数を同時に呼び出して、他の関数の完了を誰も待たないようにしたいと考えています。もう1つのポイントは、上記の関数がレコードをフェッチするときに、ユーザーが検索バーにテキストを入力/消去した場合、すべてのスレッドをキャンセル/停止したいので、これらの関数に対して別の新しい5つの呼び出しを実行する必要があることです.

提案、あらゆる種類の実用的なサンプル コード、例を探しています。どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

0

Core Data とバックグラウンド スレッドに関する良い投稿がここにあります。GCD 全体でこれを達成するのはそれほど難しくなくなったので、これはこのトピックに関するさらなる研究の良い入り口になるかもしれません。

そして、これがこのトピックへの別の投稿です。

于 2012-11-29T19:10:00.180 に答える