dispatch_group_not_tsify块是否对dispatch_group_t的生命周期持续存在?

时间:2013-05-08 19:16:57

标签: ios objective-c multithreading grand-central-dispatch

如果我有dispatch_group类属性:

@property (nonatomic, readonly) dispatch_group_t _serialGroup;

我有一个总是想要在小组完成时调用的块:

dispatch_group_notify(self._serialGroup, self._serialQueue, ^{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        //...do some stuff...
    });
});

我可以在dispatch_group_notify启动时定义dispatch_group,只要该组完成或每次向群组添加项目时都需要重新定义吗? / p>

2 个答案:

答案 0 :(得分:4)

在调用API后第一次组变空时,dispatch_group_notify()块只被提交一次到指定的队列(或者如果组已经为空,则立即提交)。

如果您想要再次调用通知块,则必须重新安装它(例如,作为通知块本身的一部分,但请注意,如果在重新安装时该组仍然为空,它将立即重新提交)。

答案 1 :(得分:0)

你必须通过调用dispatch_release()来自己释放它。所以你可以抓住它直到重复使用