从视图控制器中,作为按钮操作的结果,我需要创建一个自定义对象来管理一组异步远程服务调用,并调用触发这些服务调用的此类对象的方法。我需要视图控制器等待所有异步网络操作完成才能更新其视图。由于网络操作是异步的,我不知道在所有操作完成后如何从管理此任务的自定义对象到视图控制器进行通信。
这是我目前拥有的代码。视图控制器中的代码片段是这样的(result
var 当前未使用):
- (void)loadData
{
BOOL __block result = NO;
dispatch_queue_t queue = dispatch_queue_create(dataLoadQueue, NULL);
dispatch_async(queue,^{
Loader *loader = [[Loader alloc] init];
[loader loadData];
dispatch_async(dispatch_get_main_queue(), ^{
if (result) {
// Update view and notify success
}
else {
// Update view and notify error
}
});
});
dispatch_release(queue);
}
这是loader
自定义对象方面:
- (void)loadData
{
if ([Reachability checkNetStatus]) {
Service1 *service1 = [[Service1 alloc] init];
[service1 callAsyncService];
Service2 *service2 = [[Service2 alloc] init];
[service2 callAsyncService];
// More service calls
}
else {
// Notify network not reachable
}
}
对象service1, service2... serviceN
符合并且我通过(对象正在侦听此类通知)NSURLConnectionDelegate
通知它们已完成。然后,我不知道正确的制作方法是什么connectionDidFinishLoading:
NSNotificationCenter
loader
loader
等待所有网络操作并通知视图控制器的正确方法是什么。
提前致谢