私のiOSアプリケーションの1つのビューは、UISearchDisplayです。ユーザーが新しい文字を入力するたびにテーブルが再入力されるように、先行入力検索として設計しました。UISearchDisplayDelegateプロトコルメソッドを実装することでこれを行いました。
searchDisplayController:shouldReloadTableForSearchString:
このメソッドでは、提供された文字列を取得して、クエリURLに追加します。次に、新しいNSURLConnectionを作成し、新しい非同期リクエストを送信します。デリゲートメソッドを介してデータを受信して追加します。
connection:didReceiveData:
接続がデータのダウンロードを完了したら、次の方法で行います。
connectionDidFinishLoading
NSXMLParserのインスタンスにデータを渡します。受信するデータは、指定された文字列に一致するデータベース内のすべての連絡先のXMLファイルです。データの解析が終了したら、テーブルをリロードします。
私の問題:ユーザーがテキストを十分に速く入力すると、複数の接続タスクと解析タスクが同時に実行されます。データを追加して解析するNSMutableDataのインスタンスが1つあるため、これは問題です。うまくいけば、あなたは私がこれでどこに行くのかを見ることができます。
私の実装を改善したり、このクリティカルセクションの問題を解決したりするための提案はありますか?