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 回答