我有两种异步方法:
- (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或其他地方找到它。
我希望你理解我在说什么,并指出我正确的方向。
提前谢谢
答案 0 :(得分:2)
如果任务确实存在依赖关系,并且您将来可能需要添加更多方法,那么您应该考虑使用NSOperationQueue。
答案 1 :(得分:1)
您可以做的是将completion block
向下传递给download
方法,以便在下载完成后,将链接一直链接到调用方,如下所示:
- (void)login: (void (^)(BOOL))completion{
// some network stuff with completion
[self download:completion];
}
- (void)download: (void (^)(BOOL))completion{
completion(YES);
// some network stuff with completion
}