grand-central-dispatch相关内容

NSOperation 与 Grand Central Dispatch

我正在学习 iOS 的并发编程.到目前为止,我已经阅读了关于 NSOperation/NSOperationQueue 和 GCD.使用 NSOperationQueue 而不是 GCD 反之亦然的原因是什么? 听起来像 GCD 和 NSOperationQueue 从用户那里抽象出 NSThreads 的显式创建.然而,我不清楚这两种方法之间的关系,所以任何反馈都值得赞赏! 解决方案 ..

如何在延迟后触发块,例如 -performSelector:withObject:afterDelay:?

有没有办法在延迟后使用原始参数调用块,例如使用 performSelector:withObject:afterDelay: 但使用类似 int/double/float? 解决方案 我认为您正在寻找 dispatch_after().它要求您的块不接受任何参数,但您可以让该块从您的本地范围捕获这些变量. int parameter1 = 12;浮动参数2 = 144.1;//延迟执行我 ..

跨多个线程向 Swift 数组添加项会导致问题(因为数组不是线程安全的) - 我该如何解决?

我想将给定的块添加到数组中,然后在请求时运行该数组中包含的所有块.我有类似这样的代码: class MyArrayBlockClass {私有 var blocksArray: Array无效>= 数组()私人让 blocksQueue: NSOperationQueue()func addBlockToArray(block: () -> Void) {self.blocksArray.app ..

Swift UI 被高频@StateObject 更新淹没?

场景 一个简单的 SwiftUI App,由一个带有两个选项卡的 TabView 组成.App 结构有一个 @StateObject 属性,它被 simulateFastStateUpdate 重复且非常快速(每秒 30 次)更新. 在这个例子中,simulateFastStateUpdate 没有做任何有用的工作,但它非常类似于一个快速更新应用程序状态的真实函数.该函数在短时间内对后 ..
发布时间:2021-09-02 19:31:45 移动开发

在 Swift CLI 中使用 GCD

所以我尝试在 CLI 中使用 GCD.为了测试它,我写了一些这样的代码: 导入基础变量 i = 0打印(“一个:",我)dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED,0)){对于 1 中的 n.. 这个输出是:一:0乙:0时间:9电子:9 几秒钟后打印最后一行.我想知道的是在 d 发生了什么?我放在那个 ..

调度组不返回获取的数据

我正在尝试使用DispatchGroup从多个请求中获取数据.我不明白为什么print(weatherData.fact.pressureMm!)可以正常工作,但是数据没有追加到dataArray和print(dataArray?[0] .fact.pressureMm ??"nil")中,所以打印为nil. 我也尝试从complitionHandeler打印数据,结果是相同的. 我如 ..
发布时间:2021-05-13 19:03:58 移动开发

Grand Central Dispatch替代使用NSTimer的方法-多次无效

我要使用的 dispatch_source_t 出现问题.我想用它来延迟 PHChange 的处理5秒钟,因为 PHChange 可以在短时间内多次发生.我将不胜感激.本质上,我想取消以前的 dispatch_source_t 计时器,就像 NSTimer 一样. @property(非原子的,强的)dispatch_source_t libraryChangedTimer;dispatch_ ..

在主线程中使用后台线程的快速领域插入数组

我有一组通过rest响应接收的对象,我想将它们插入背景线程中的realm db中,并在 main 线程的uicollectionview中使用.收到休息的响应后,我将调用回调函数,并将数组插入后台线程中的db中.当我尝试访问在后台插入的对象的主线程属性时出现的问题,我得到了异常(请参见下文),我认为这是由于尚未插入对象而引起的 由于未捕获的异常"RLMException"而终止应用程序,原因 ..
发布时间:2021-05-13 19:03:52 移动开发

如何在异步线程中更新ProgressView

在iOS中,我对GCD和队列的组合几乎没有疑问.让我把那些放在这里 首先.根据IOS6编程指南,这是用于使用异步和同步下载图像的小代码段.及其如下 dispatch_queue_t美术队列= dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0); dispatch_async(concurrentQueue,^ {UII ..
发布时间:2021-05-13 19:03:46 移动开发

如何强制GCD在主队列上执行当前块?

我有工作线程任务,该任务使用以下命令在主队列中发布结果: //在工作队列上//(长时间运行的任务)//在主队列上发布结果dispatch_async(dispatch_get_main_queue(),^(void){_完成=是;}); 我如何坐在主队列(主CXTest线程)中,并强制gcd处理队列上的当前任务,如: //在主队列上while(!_finished){[NSThread s ..
发布时间:2021-05-13 19:03:43 移动开发

在"for in loop"中使用延迟DispatchQueue.

任务是每秒更改背景颜色一次.被用于"for in loop".为了延迟,使用了DispatchQueue.一切似乎都很好,但要注意的是,经过10次迭代后,背景颜色开始以2秒的延迟变化,在3秒后稍有变化.迭代次数越多,延迟越大.我在控制台中显示了时间(以秒为单位)以查看其变化.我看到了结果,但是我不明白哪里出了问题.我通过计时器完成了任务,没有问题,但是我想了解DispatchQueue延迟出了什么 ..
发布时间:2021-05-13 19:03:37 移动开发

SwiftUI DispatchQueue asyncAfter在执行十个预定任务后将无法正常工作

如果我运行下面的代码,它会正确计数到10,然后跳过每个奇数. 如果让它运行超过20,它将开始越来越多地跳过(输出将类似于1-2-3-4-5-6-7-8-9-10-12-14-16-18-20-23-26-29 ...). 找不到相关文档,例如计划任务的数量有限,所以请问您:)从昨天开始学习SwiftUI,请原谅这是一个明显的问题. 如果将其安排在与main不同的DispatchQ ..
发布时间:2021-05-13 19:03:34 移动开发