我现在正在使用dispatch_group来管理项目中的多线程。像这样的东西:
- (void)functionA{
self.taskGroup = dispatch_group_create();
// Call functionB more than one time
[self functionB];
...
[self functionB];
dispatch_group_notify(..., ^{
// Do something if all [self functionB] complete
});
- (void)functionB{
dispatch_group_enter(self.taskGroup);
if (condition) {
dispatch_group_leave(self.taskGroup);
return;
}
[self doSomethingInBackground:^{
NSLog(@"completed!");
dispatch_group_leave(self.taskGroup);
}];
}
我的问题是如何在functionB完成时自动调用dispatch_group_leave,这样我就不需要在functionB中的每个return语句或functionB调用的任何后台任务之前调用它。
答案 0 :(得分:0)
正如评论中提到的@ Sk0prion,我可以在这里简单介绍一下宏。
#define m_return dispatch_group_leave(self.taskGroup);return