1
我有一个数据模型/存储对象,通过几个包含数据的API与Internet接口。要与之交互的API数量是动态的:从概念角度来看,我们可以将端点视为NSMutableArray中的字符串。问题是我想在最后的端点/ API调用完成之后通知观看者/其他观察者更新的数据。我试过GCD调度,但下面的模式似乎不能正常工作:等待,直到所有的iOS块被执行之前
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, queue, ^{
for(MyAPIEndpoint __weak __block *ep in apiList)
{
[self runAPI:ep withCompletionBlock:^(MyAPIEndpoint *api, NSError *err)
{
// update the data model here, code omitted as it's not relevant
}
];
}
});
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
// this statement must only execute AFTER the last block in the for loop above is done
[[NSNotificationCenter defaultCenter] postNotificationName:@"apiDataUpdated" object:self];
但是,它似乎没有工作;看起来这个[self runAPI ...]调用中的代码永远不会执行?
Thanks @Rich,让我试试吧! –
对不起,我混合和匹配的代码,并没有从你的问题中取出一些代码,让我编辑一个完整的实现的答案! – Rich
@UzumakiNaruto完成:) – Rich