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