私はNSXMLParserを使って内線を解析します。 APIデータ。また、extton APIから取得した情報を保持するために、シングルトン共有配列varを使用します。重複した検索結果とXMLParser配列リフレッシュの問題
この情報は動的であり、今の事は、私が使用して既存のアレイのコンテンツをオフにクリアし、ユーザーのタイプのものとすぐにある
UISearchBar
でユーザーが何かをchangesas [retrievedArray removeAllObjects]。これは、検索バーの現在の用語に基づいてretrieveArrayを更新しました。
これは、ユーザーがゆっくり入力すると正常に動作します。しかし、ユーザーが非常に高速に入力すると、重複した検索結果が表示されます。これは、retrieveArrayの内容が消去されるのに十分な時間がないためです。
私はまだこの問題を解決しようとしています。いくつかの修正を提案してください。
私に修正をお願いいたします。
@Maxはい、私はスレッド NSAutoreleasePoolを使用*プール=の内容だけをユーザーに更新することができます[NSAutoreleasePool alloc] init]; [self setURL:url]; \t NSThread * myThread = [[NSThread ALLOC] initWithTarget:自己 セレクタ:@selector(実行:) \t \t \t \t \t \t \t \t \t \t \t \tオブジェクト:なし]。 [retrievedArray removeAllObjects]; \t [myThread start]; [プールの解放]; 私はスレッドなしで試してみましたが、それでも高速タイピングで問題は解決しません。 他の修正方法を提案してください。 – testndtv
いいえ、スレッドを使用することはOKです。配列にアクセスするたびに@synchronize(retrievedArray){}を使用するだけです。 – Max
私はあなたに少しトリックを提案することができます:メソッドを定義する - (void)clearArray {@synchronized(retrieveArray){[retrievedArray removeAllObjects]; }}と別のもの、つまり - (void)appendArray {//ここにデータを入れてください} NSLogをそのメソッドに置くと、配列サイズを出力できます。そして、それがいつ変化しているかがわかります。トレッドIDを印刷することもできます。 – Max