【发布时间】:2015-02-10 11:05:08
【问题描述】:
我需要在调用 api (NSURLSessionDataTask async) 的单独线程中一个接一个地运行 3 个方法。我已经查看了调度组,但这似乎同时运行方法 1 和 2,然后在它们完成时运行方法 3:
dispatch_group_t group = dispatch_group_create();
//METHOD 1
dispatch_group_enter(group);
[self method1WithCompletion:^(BOOL success){
dispatch_group_leave(group);
}];
//METHOD 2
dispatch_group_enter(group);
[self method2WithCompletion:^(BOOL success){
dispatch_group_leave(group);
}];
dispatch_group_notify(group,dispatch_get_main_queue(),^{
//METHOD 3
});
我需要它来运行方法 1,当它完成时运行方法 2,当它完成时,最终运行方法 3(对方法进行排队)。
我知道我可以在每次完成时链接方法以运行下一次,但我认为会有更好的方法来解决这个问题......有什么想法吗?
【问题讨论】:
-
调用[self method1]有什么问题; [自我方法2]; [自我方法3]; ?
-
@RicardPérezdelCampo 这样做将导致所有 3 个异步任务立即发生。他想在方法1完成后调用方法2,在方法2完成后调用方法3。
-
这样不行吗? [self method1WithCompletion:^(BOOL success){ [self method2WithCompletion:^(BOOL success){ [self method3WithCompletion:^(BOOL success){ }]; }]; }];
-
是的,它会,但他在问题中明确表示他不想这样做:)“我知道我可以在每个完成时链接方法以运行下一个但我认为那里会是一个更好的方法”
标签: objective-c xcode grand-central-dispatch nsurlsessiondatatask