【发布时间】:2017-06-30 21:40:04
【问题描述】:
我有两个异步方法:
- (void)login: (void (^)(BOOL))completion{
// some network stuff with completion
}
和
- (void)download: (void (^)(BOOL))completion{
// some network stuff with completion
}
对于后台提取,我需要完成这两个方法,并且只返回一个完成。
我当然可以嵌套这些方法
- (void)login: (void (^)(BOOL))completion{
//....
[self download:^(BOOL success) {
//....
if (success){
completion(true);
}
}];
}
但是,一旦我添加了一个或多个需要同时完成的方法,代码就会变得混乱。
我记得曾经阅读过一种方法,您可以通过该方法将所有这些方法归为一个线程,但我似乎没有合适的词汇来在 SO 或其他地方找到它。
我希望你明白我在说什么,并为我指明正确的方向。
谢谢
【问题讨论】:
-
你在考虑 dispatch_barrier_async 吗?
-
我愿意。您为我指出了正确的方向,但您的答案不包含该方向。对我来说,有效的是: dispatch_group_t serviceGroup = dispatch_group_create(); dispatch_group_enter(serviceGroup); [asyncMethod:^(BOOL Success) { if (Success){ dispatch_group_leave(serviceGroup); } }];
标签: ios completion