我需要在調用api(NSURLSessionDataTask async)的單獨線程中相繼運行3個方法。我特地到調度組,但是這似乎在同一時間運行方法1和2,然後運行方法3,當他們完成:依次運行3個方法
dispatch_group_t group = dispatch_group_create();
//METHOD 1
dispatch_group_enter(group);
[self method1WithCompletion:^(BOOL success){
dispatch_group_leave(group);
}];
//METHOD 2
dispatch_group_enter(group);
[self method2WithCompletion:^(BOOL success){
dispatch_group_leave(group);
}];
dispatch_group_notify(group,dispatch_get_main_queue(),^{
//METHOD 3
});
我需要它來運行方法1和完成時運行的方法2,當完成時最後運行方法3(排隊方法)。
我知道我可以鏈接每個完成的方法來運行下一個,但我認爲會有更好的方法來...這有什麼想法?
調用[self method1]有什麼問題; [self method2]; [self method3]; ? – 2015-02-10 12:50:49
@RicardPérezdelCampo這樣做會導致所有3個異步任務立即發生。他想在方法1完成後調用方法2,方法2完成後調用方法3。 – cjwirth 2015-02-10 12:54:30
所以這不會工作?[self method1WithCompletion:^(BOOL success){ }];自我方法1完成:^(BOOL成功){自我方法2完成:^(BOOL成功) }]; }]; – 2015-02-10 12:57:26