私はアプリケーションでGCDや多くのスレッドを使用していませんが、別のスレッドからメソッドを実行する必要がある状況に遭遇しました。このメソッドが完了したら、コールバックのメインスレッドを使用して別のメソッドを呼び出す必要があります。私は、スレッドが操作を終了したが、それでも対象についてあまり明確ではないことを検出する方法を調べています。IOS Grand Central Dispatch with callback method
私はテストアプリケーションを作成し、すぐに簡単な例としてviewDidLoadメソッドを使用しました。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSLog(@"viewDidLoad called");
sleep(5); // simulating a thread being tied up for 5 seconds
dispatch_async(dispatch_get_main_queue(), ^{
[self callbackMethod]; // method called after above thread has completed running
});
});
}
この例は、私がやろうとしていることに対して機能しますか?アプリケーションを実行すると、sleep(5)の終了後にコールバックメソッドが呼び出されたように見えます。これはこの状況を処理する適切な方法ですか、私はコースから離れていますか?
うん、うまくいくはずです。 – geraldWilliam
すみません、返信ありがとう!@mattは追加のリンクもありがとうございます。とても有難い! – tg2007