【发布时间】:2016-09-16 17:58:39
【问题描述】:
我的 iOS 应用程序使用 C 函数进行某些计算。我想从 -(void)viewDidLoad 但我不希望它冻结主线程。我尝试用 dispatch_async(dispatch_get_main_queue... 块调用它,但它仍然在主线程上被调用。还包括对 Objective-c 方法的函数调用和调用 [self performSelector: InBackground] 也不起作用。请帮忙。是有什么办法可以在 Objective-C 应用程序的后台执行 C 函数?
【问题讨论】:
-
dispatch_get_main_queue()是问题所在。您必须使用不同的队列。 -
您应该阅读 Apple 的线程指南。如果您希望它在后台运行,则将某些内容放在主线程上是没有意义的。此外, performSelectorInBackground: 将起作用(显然,您需要将 C 代码封装在 Obj-C 函数中才能使用它)。
-
是的,将其放在后台队列中有效。但是使用 objc 方法封装的函数的 performSelectorInBackground 没有。
标签: ios objective-c c multithreading