MoK*_*KaM 27 iphone multithreading background objective-c ios
我有一个函数返回一个在iPhone上计算需要15秒的字符串.
我希望能够在后台线程上运行该函数,以便主线程可以用于用户界面.
我听说GCD有一种新技术对此有好处,有人可以提供一些示例代码来说明这是如何工作的吗?
这是在后台线程上运行泛型函数并将结果返回到UI文本字段.
编辑:
感谢Alladinian它是一种享受.
但是,当我使用GCD时,我的功能需要1秒钟才能在iphone模拟器上执行(我猜这在iphone上大约需要5秒钟(今天晚些时候必须测试它才能确定))
这有什么原因吗?也许背景线程比较慢或什么?
All*_*ian 91
实际上,使用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,这个使用起来非常简单:
[self performSelectorInBackground:@selector(someMethod:) withObject:nil];
| 归档时间: | 
 | 
| 查看次数: | 37940 次 | 
| 最近记录: |