IOS大中央调度与callback方法

我没有使用GCD或multithreading在我的应用程序,但我遇到了一种情况,我需要运行一个或两个方法closures另一个线程。 一旦这个方法完成,我需要从callback中使用主线程调用另一个方法。 我一直在寻找如何检测线程何时完成操作,但仍然不太清楚的主题。

我创build了一个testing应用程序,并使用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 }); }); } 

这个例子是否适用于我想要做的事情? 在运行应用程序时,看起来在睡眠(5)结束之后调用callback方法。 这是处理这种情况的正确方法还是我偏离过程?

你现在在; 这是下线和主线程的标准模式。 看到我的答案在这里: https : //stackoverflow.com/a/13080519/341994

例如,我的书中的代码就是这样构成的:

https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch25p868mandelbrotGCD/ch38p1106mandelbrotNoThreading/MyMandelbrotView.swift

在这个例子中,看看drawThatPuppy如何从主线程中执行耗时的计算,然后返回主线程来执行绘制到界面中。