0

私は検索バーを持っていて、インターネットからいくつかの情報を検索し、URLからNSXMLParserを起動し、UITableViewで解析された情報を表示しますが、このプロセスではUIがブロックされ、検索をキャンセルして別の検索を行うことができますパーサーが終了するのを待たなければならないので、私の質問は、それが正しい解決策である場合に別のスレッドで実行し、必要に応じて別の検索を実行するために検索を中止する方法です...私はNSOperationクラスを知っていますが次に、このクラスがデータを表示するためにテーブルビューに情報を提供する方法と、操作を中止して別の操作を実行する方法を教えてください。

今私は検索を行うためにこれを行います:

 [self performSelector:@selector(request:) withObject:searchText afterDelay:0.7];

次に、リクエストメソッド、別のクラスでNSXMLParserを使用した検索を開始します。

4

1 に答える 1

0

UIのブロックを回避するには、次を使用します

[self performSelectorInBackground:@selector(request:) withObject:text];

私はNSOperationをあまり使用していませんが、ドキュメントから、操作の完了ブロックを設定できるようです。このブロックでは、次のようなものを呼び出すことができます。

[self performSelectorOnMainThread:@selector(populateMyTable) withObject:nil waitUntilDone:NO];

また、NSOperationには、cancel検索メソッドを中止する限り、探しているものを提供しているように見えるインスタンスメソッドがあります。

于 2012-04-26T23:42:13.120 に答える