tg2*_*007 8 concurrency objective-c grand-central-dispatch ios
我没有在我的应用程序中使用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
});
});
}
Run Code Online (Sandbox Code Playgroud)
这个例子是否适用于我想要做的事情?运行应用程序时,似乎在sleep(5)完成后调用回调方法.这是处理这种情况的正确方法还是我离开了?
你被发现了; 这是下线和主线程的标准模式.请在此处查看我的答案:https://stackoverflow.com/a/13080519/341994
例如,我的书中的代码,以这种方式构建:
在该示例中,查看如何drawThatPuppy从主线程中执行耗时的计算,然后返回主线程以进行绘制到界面中.
| 归档时间: |
|
| 查看次数: |
6542 次 |
| 最近记录: |