我有一个函数返回一个字符串,在 iPhone 上需要 15 秒来计算。
我希望能够在后台线程上运行函数,以便主线程可以用于用户界面。
我听说 GCD
是一项对此很有用的新技术,有人可以提供一些关于它如何工作的示例代码吗?
即在后台线程上运行一个通用函数,并将结果返回到一个 UI 文本字段。
编辑:
感谢 Alladinian,它很有用。
但是,当我使用 GCD 时,我的函数在 iphone 模拟器上的执行时间要长 1 秒(我猜这在 iphone 上大约需要 5 秒(我今天晚些时候必须测试它才能确定))
有什么原因吗?也许后台线程比较慢?
最佳答案
嗯,使用 GCD 实际上这很容易。典型的工作流程是这样的:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
dispatch_async(queue, ^{
// Perform async operation
// Call your method/function here
// Example:
NSString *result = [anObject calculateSomething];
dispatch_async(dispatch_get_main_queue(), ^{
// Update UI
// Example:
self.myLabel.text = result;
});
});
有关 GCD 的更多信息,您可以查看 Apple's documentation here
关于iphone - 将函数移动到 objective-c 中的后台线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12671042/