2
這是我第一次使用dispatch_group_t
,我犯了一個簡單的錯誤。 dispatch_group_notify
在任何異步調用返回之前都會被調用,因此在第一個調用dispatch_group_leave(group)
之前,調用EXC_BAD_INSTRUCTION
。dispatch_group_t - EXC_BAD_INSTRUCTION
但是,我不知道爲什麼會發生這種情況。
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, ^{
[self getCategoriesMainWithParameters:nil withSuccess:^(NSArray *objects) {
[categoriesMain addObjectsFromArray:objects];
dispatch_group_leave(group);
} failure:^(NSError *error) {
groupError = error;
dispatch_group_leave(group);
}];
});
dispatch_group_async(group, queue, ^{
[self getCategoriesSubWithParameters:nil withSuccess:^(NSArray *objects) {
[categoriesSub addObjectsFromArray:objects];
dispatch_group_leave(group);
} failure:^(NSError *error) {
groupError = error;
dispatch_group_leave(group);
}];
});
dispatch_group_async(group, queue, ^{
[self getCategoriesProductWithParameters:nil withSuccess:^(NSArray *objects) {
[categoriesProduct addObjectsFromArray:objects];
dispatch_group_leave(group);
} failure:^(NSError *error) {
groupError = error;
dispatch_group_leave(group);
}];
});
dispatch_group_notify(group,dispatch_get_main_queue(),^{
...
});
見http://stackoverflow.com/a/25433076/629118我解釋了 「引擎蓋下」。 – 2015-02-12 01:57:08