ios - 如何从 objective-c 方法异步分派(dispatch) C 函数

标签 ios objective-c c multithreading

我的 iOS 应用程序使用 C 函数进行某些计算。我想从 -(void)viewDidLoad 但我不希望它卡住主线程。我尝试用 dispatch_async(dispatch_get_main_queue... block 调用它,但它仍然在主线程上被调用。还包括对 objective-c 方法的函数调用和调用 [self performSelector: InBackground] 也不起作用。请帮助。是有什么方法可以在 objective-c 应用程序的后台执行 C 函数?

最佳答案

您必须使用不同的队列,例如:

dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_async(backgroundQueue, ^{
   // do something
});

参见 Dispatch Queues了解更多详情。

关于ios - 如何从 objective-c 方法异步分派(dispatch) C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37330257/

相关文章:

objective-c - iOS 无法识别的选择器发送到实例 0x45e8

ios - Xcode 6 在 OS X 10.10 上崩溃,异常名称为 : IBAssertionFailure

objective-c - Swift 变量是原子的吗?

objective-c - 运行时 xml/json 生成目录内容

c - Google Test 可以测试 C 代码吗?

c - 当您尝试在 c 中释放()已经释放的内存时会发生什么?

ios - 发送到实例的无法识别的选择器?

javascript - 如何修复继承的隐藏导航IOS(仅在需要时显示导航栏)-React Native

ios - 将CLLocationCoordinate2D添加到自定义MKAnnotation对象

使用 GNU make 跨不同目录进行编译