在我的应用程序中,我正在与远程服务器进行一些通信,因为这可能很慢,我认为异步运行该代码是个好主意。我将通信代码放在传递给 dispatch_async 的块中。此代码进行通信,并在完成后设置标签的文本。最后一部分是问题所在。文本已设置,但会在几秒钟的延迟后出现。这是我的代码。
- (void)doNetworkingTask {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Slow network task goes here.
// Slow network task done, notify the user.
[self.myLabel setText:@"task done."];
NSLog(@"task done.");
});
}
这里发生的是我的网络任务完成,NSLog-text 被记录,几秒钟后,标签的文本被更新。我的问题是 1)为什么标签文本不会立即更新?和 2) 做我想做的事的正确方法是什么?(执行慢速网络任务而不阻塞其他任何内容,完成后通过文本标签更新用户。)