1

XML Web サービスを解析しています。解析が終了したら、別のメソッドを呼び出したいと思います。しかし、私のコードは解析プロセス中にメソッドを呼び出します。私が望むのは、解析プロセスが終了するまで待つことです。これが私のコードです:

    ArsivNoCheck *arsivNoCheck = [ArsivNoCheck alloc];
    [arsivNoCheck checkArsivNo:_txtArsivNo.text];  //Here I call parsing method in another class

    //Here I call the method
    [self performSelectorOnMainThread:@selector(sampleMethod) withObject:nil waitUntilDone:YES];

    -(void) sampleMethod
    {
    //some code
    }
4

1 に答える 1

1

NSOperation、およびその方法を検討する必要がありcompletionBlockます。

次に、解析を実行し、最後にコードを実行できます。

注 : UI を更新する予定がある場合は、注意してください。completionBlock必ずしもメイン スレッドで実行されているとは限りません。


NSOperation のドキュメント参照から:

完了ブロック

オペレーションのメイン タスクが完了したときに実行するブロックを返します。

-(void (^)(void))completionBlock

戻り値

オペレーションのメイン タスクが完了した後に実行するブロック。このブロックにはパラメーターがなく、戻り値もありません。

討論

指定した完了ブロックは、isFinished メソッドによって返された値が YES に変わると実行されます。したがって、このブロックは、操作のプライマリ タスクが終了またはキャンセルされた後に、操作オブジェクトによって実行されます。

例 :

[filterOp setCompletionBlock: ^{
    NSLog(@"Finished filtering an image.");
}];

実装については、Ray Wenderlich のサイトにあるこのチュートリアルを参照してください。

于 2013-09-13T11:50:12.797 に答える