アプリでGCDや多くのスレッドを使用したことはありませんが、別のスレッドから1つまたは2つのメソッドを実行する必要がある状況に遭遇しました。このメソッドが完了したら、コールバックからメインスレッドを使用して別のメソッドを呼び出す必要があります。私はスレッドが操作を終了したことを検出する方法を探し回っていますが、それでも主題についてはあまり明確ではありません。
テストアプリを作成し、簡単な例として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)が終了した後にコールバックメソッドが呼び出されたように見えます。これはこの状況に対処するための適切な方法ですか、それとも私はコースから外れていますか?