gpt4 book ai didi

ios - GCD -dispatch_async 在主队列上工作,但在后台队列上崩溃

转载 作者:行者123 更新时间:2023-11-30 17:13:37 24 4
gpt4 key购买 nike

在不涉及太多细节的情况下,我正在尝试用 C 编写的相当复杂的非对称签名算法,并从用 Swift 编写的 osx 应用程序调用它。签名大约需要 1 秒,因此我尝试异步调用它。

主队列上的异步工作有效,但在主队列上运行它有点违背了异步运行它的目的。

dispatch_async(dispatch_get_main_queue()) {
// run code
}

后台队列上的异步崩溃并出现 EXC_BAD_ACCESS。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
// run code
}

在后台队列上同步可以工作,但它无论如何都会锁定 UI(主队列)。

dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
// run code
}

谁能解释为什么在主队列上异步运行代码工作正常,但在后台队列上运行时会导致崩溃?有补救办法吗?如果不是,那么更好的是......在主队列上异步还是在后台队列上同步?

最佳答案

如果您直接从 Objective C 代码调用 C 代码,那么您需要将 C 代码包装在 Objective C 文件中,并从.dispatch 队列调用该包装器方法。

关于ios - GCD -dispatch_async 在主队列上工作,但在后台队列上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30694379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com