等待方法完成的最佳方法是什么?

时间:2014-11-10 14:30:17

标签: ios objective-c asynchronous wait

我正在做一些事情,我需要一个方法来完成,然后再调用另一个。问题是,我很难搞清楚我该怎么做。我搜索了块和异步任务,但我没有得出结论,我想问你们的建议。

感谢。

1 个答案:

答案 0 :(得分:2)

有多种方法可以做到:

  • UINotification,异步任务将发布此通知,主线程将订阅此通知。
  • 委托模式,如果在单独的类上创建了异步任务,则可以在该类上创建协议。并在主类上实现该协议。您可以查看iOS上的多个委托类,例如UITableViewDelegateUIScrollViewDelegate。总结是,在单独的类上运行的异步任务将在特定事件完成时调用其委托,就像任务完成一样。
  • 使用块变量,您可以为异步任务创建方法签名,例如:

    - (void)asyncTask:(void(^)())completionHandler;

在您的主要方法中,您可以致电:

[self asyncTask:^{
    [self asyncTask2:^{
    }];
}];

通常情况下,如果异步任务在同一个类上,我会使用块变量,或者只是一次。如果有很多任务,我将创建单独的类并使用委托。通知总是我的最后手段,因为它更难调试,而且在我看来它更加紧密耦合。