【发布时间】:2012-10-18 09:57:39
【问题描述】:
我没有在我的应用程序中使用 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) 完成后调用回调方法。这是处理这种情况的正确方法还是我偏离了方向?
【问题讨论】:
-
是的,看起来应该可以正常工作。
-
大家感谢您的快速回复!@matt 也感谢您提供的其他链接。非常感谢!
标签: objective-c ios concurrency grand-central-dispatch