最初のメソッドが完了したら、要件に従って非同期でメソッドを処理しようとしています。その後、2 番目のメソッドの実行が開始されます。問題は、最初のメソッド自体にバックグラウンド スレッドで実行されるコードがあることです。
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の定義を変更することはできません。また、変更すると、このメソッドが呼び出されている場所から多くの既存のコードを変更することになります