gpt4 book ai didi

ios - 迅速: Grand-Central-Dispatch but code is executed on mainthread?

转载 作者:行者123 更新时间:2023-12-01 18:52:05 28 4
gpt4 key购买 nike

我使用地址簿框架导入数据并将联系人存储在核心数据中。该方法包含在 GCD 中,但 UI 没有响应,并且所有代码都在线程 1 上执行。我的代码有什么问题?

func importContacts(){

dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_BACKGROUND.value), 0)) {

self.importContactsFromAdressbook()
}
}

最佳答案

首先,您使用的是 dispatch_get_global_queue并指定QOS_CLASS_BACKGROUND作为您的操作队列。这将导致您的 block 在后台任务的线程中执行,该线程不是主线程。

The method is wrapped in GCD but the UI doesn't respond...



如果我理解正确,您正在尝试更新 block 中的 UI。这是不允许的。 Cocoa UI 框架(包括 UIKit 和 AppKit)不是线程安全的。 UI 元素的任何更新/交互都必须在主线程上完成。

所以,如果你的 importContactsFromAdressbook是关于 UI 的,你应该使用 dispatch_get_main_queue而是将其发送到主线程。

可能有用: Concurrency Programming Guide

关于ios - 迅速: Grand-Central-Dispatch but code is executed on mainthread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30425489/

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