我在我的应用程序中有一个场景,我想在一个方法中做一些耗时的任务,包括一些数据处理以及UI更新。 我的方法看起来像这样, – (void)doCalculationsAndUpdateUIs { // DATA PROCESSING 1 // UI UPDATE 1 // DATA PROCESSING 2 // UI UPDATE 2 // DATA PROCESSING 3 // UI UPDATE 3 } 由于费时,我想在后台线程上进行数据处理, dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, NULL), ^{ 但是,由于数据处理和UI更新都采用相同的方法,所以我只想在主线程中移动UI更新, dispatch_async(dispatch_get_main_queue(), ^{ 最后我的方法看起来像这样, – (void)doCalculationsAndUpdateUIs { // DATA PROCESSING 1 dispatch_async(dispatch_get_main_queue(), ^{ // UI UPDATE 1 }); /* I expect […]
我在Swift 2.x(甚至1.x)项目中有很多代码,看起来像这样: // Move to a background thread to do some long running work dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { let image = self.loadOrGenerateAnImage() // Bounce back to the main thread to update the UI dispatch_async(dispatch_get_main_queue()) { self.imageView.image = image } } 或者像这样的东西来延迟执行: dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(0.5 * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) { print("test") } 或者Grand Central Dispatch API的各种其他用途… 现在,我已经在Swift 3的Xcode 8(beta)中打开了我的项目,我得到了各种各样的错误。 […]