如何自动dispatch_group_leave

时间:2015-04-01 09:14:10

标签: ios objective-c

我现在正在使用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调用的任何后台任务之前调用它。

1 个答案:

答案 0 :(得分:0)

正如评论中提到的@ Sk0prion,我可以在这里简单介绍一下宏。

#define m_return dispatch_group_leave(self.taskGroup);return