我正在尝试根据要求异步处理方法,一旦第一个方法完成,第二个方法才应该开始执行。问题是第一种方法本身具有在后台线程上运行的代码。
我尝试了 dispatch_semaphore_wait,但这也没有用。
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, queue, ^{
[self firstMethod];
NSLog(@"firstMethod Done");
});
dispatch_group_notify(group, queue, ^ {
NSLog(@"1st method completed");
NSLog(@"2nd method starting");
[self secondMethod];
});
FirstMethod 本身像这样在另一个工作线程上运行
-(void)firstMethod
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
//processing here.....
}];
实现它的最佳方法是什么,我无法更改 firstMethod 的定义,因为它由某些 3rd 方提供,并且更改它意味着更改许多现有代码,从该方法被调用