我没有在我的应用程序中使用 GCD 或太多线程,但我遇到了需要从另一个线程运行一两个方法的情况。一旦这个方法完成,我需要使用回调中的主线程调用另一个方法。我一直在四处寻找如何检测线程何时完成操作,但对该主题仍然不太清楚。
我创建了一个测试应用程序,并使用 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) 完成后调用回调方法。这是处理这种情况的正确方法还是我偏离了方向?