2

如果我有一个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并且每当该组完成时都会调用它,还是每次我向组中添加项目时都需要重新定义它?

4

2 回答 2

4

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

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

于 2013-05-11T02:30:56.990 回答
0

您必须通过调用 dispatch_release() 自己释放它。所以你可以坚持到并重复使用它

于 2013-05-08T19:23:39.930 回答