grand-central-dispatch相关内容

导航返回时取消 GCD 异步任务

我的 iOS 应用程序的视图控制器中有一个运行时间相对较长的任务(5-10 秒).它通过 GCD 在后台异步运行.用户可以在此任务期间进行 UI 操作,因此他也可以按返回按钮导航到上一个视图. 我的代码很简单: dispatch_queue_t queue = dispatch_queue_create("com.x.y.z", NULL);dispatch_async(队列,^{Test ..

在 iOS 中杀死 dispatch_async 队列中的项目

我正在使用 dispatch_async 在后台运行一堆项目,有时我想杀死队列中的内容 - 这可能吗?例如,此代码在视图上运行,然后用户返回屏幕.无论返回导航如何,所有这些触发的操作都会继续运行.理想情况下,我想阻止这些项目运行: dispatch_async(dispatch_get_global_queue(2, 0), ^{for (int i=0; i 如果我创建一个队列并命名它,然后 ..
发布时间:2022-01-14 19:35:25 移动开发

Sprite Kit 中可重用的多线程实现

我正在开发一款 Sprite Kit 游戏,我需要进行一些多线程处理以保持健康的 fps. 更新时我调用一个函数来创建大量 UIBezierPaths 并使用 C++ 静态库合并它们. 如果我有超过 10 个形状,帧速率会急剧下降,所以我决定尝试 GCD 并尝试使用单独的线程解决问题. 我把它放在 didMoveToView 中: queue = dispatch_get_gl ..

比较 GCD 与 performSelectorInBackground:dispatch_async 不在后台

Grand Central Dispatch 很棒,可以减少代码量,但为什么我不能在后台线程上运行一些东西? 我制作了一个示例应用程序来说明我的意思(没有评论的工作): - (IBAction)performSel {[self performSelectorInBackground:@selector(doStuff) withObject:nil];[NSThread sleepForTi ..

调度组 - 无法通知主线程

在 GCD 上阅读 Swift 3 进化后,我正在尝试创建调度组.问题是 group.notify(queue: 在我将 DispatchQueue.main 作为队列传递时不通知,尽管它确实适用于后台队列. 此外,我不确定我的语法是否全部正确,因为我正在尝试将代码从 Swift 2 转换为 Swift 3. typealias CallBack = (result: Bool) ->空白 ..
发布时间:2022-01-01 11:57:56 移动开发

“暂停"Swift 中的游戏

我用 Swift 创建了一个游戏,其中涉及怪物的出现.怪物的出现和消失,基于定时器使用如下: func RunAfterDelay(_ delay: TimeInterval, block: @escaping()->()){让时间 = DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC)))/Double(NSEC_PER ..
发布时间:2022-01-01 11:42:53 移动开发

当两个其他完成块被调用时调用完成块

我有一个函数 doEverything 需要一个完成块.它调用另外两个函数,doAlpha 和 doBeta,它们都有完成块.这两个函数应该异步运行.我想在其他两个函数都调用了它们的完成块之后调用 doEverything 的完成块. 目前,它看起来像这样: func doEverything(completion: @escaping (success) -> ())) {var alp ..
发布时间:2022-01-01 11:30:46 移动开发

DispatchGroup:检查“进入"了多少

我正在使用 Swift 3 DispatchGroup 等待多个异步操作完成(根据 this answer 工作完美,符合预期. 有没有办法检查已经输入了多少操作,比如 dispatchGroup.count 或类似的东西? 解决方案 你可以在调试说明中看到进入组的次数: OS_dispatch_group: group[0x60000221d950] = { xref = 3 ..
发布时间:2022-01-01 11:28:11 其他开发

Swift 3 中的 dispatch_once 在哪里?

好的,所以我在 Xcode 8 中发现了新的 Swifty Dispatch API.我很高兴使用 DispatchQueue.main.async,我一直在浏览 Xcode 中的 Dispatch 模块以找到所有新的 API. 但我也使用 dispatch_once 来确保诸如单例创建和一次性设置之类的事情不会被执行多次(即使在多线程环境中)...和 ​​dispatch_once 在新的 ..
发布时间:2022-01-01 11:06:38 移动开发

DispatchSourceTimer、Timer 和 asyncAfter 之间的区别?

我正在努力理解 DispatchSourceTimer、定时器 和 asyncAfter(在我的例子中用于安排需要每 X 秒运行一次的任务,尽管了解计时器的差异可能对有用)(或者除了列出的计时器之外,Swift 中还有其他(更有效的)调度机制吗?). Timer 需要在它启动的当前队列上有一个活动的运行循环.DispatchSourceTimer 不需要.Timer 防止 CPU 进入空闲状 ..
发布时间:2021-12-31 15:41:50 移动开发

在 Swift 中,如何停止所有进程,直到从 UICOLLECTIONVIEW 中的 parse.com 检索到数据

在 CollectionView 中,我显示来自 parse.com 的数据.成功找回.但无法在单元格中显示.我收到错误为数组出站.我发现了错误,解析以异步方式运行.但是,在解析结束之前,集合视图被加载.所以我无法在单元格中显示值.它正在抛出一个错误.如何停止所有过程,直到解析完全加载?请指导我.我的代码如下: //VIEWCONTROLLER 有 collectionViewvar myLis ..

为什么我应该为高级应用程序选择 GCD 而不是 NSOperation 和块?

Apple 的 Grand Central Dispatch 参考资料说: "...如果您的应用程序需要在系统——例如,如果它需要操作文件描述符,Mach端口、信号或定时器.GCD 不限于系统级应用程序,但在将其用于更高级别的应用程序之前,您应该考虑 Cocoa 中是否提供了类似的功能(通过NSOperation 和块对象)会更容易使用或更多适合您的需求.". http://devel ..

iPhone - Grand Central Dispatch 主线程

我一直在我的应用程序中成功使用大型中央调度,但我想知道使用这样的东西的真正优势是什么: dispatch_async(dispatch_get_main_queue(), ^{ ... 做事 甚至 dispatch_sync(dispatch_get_main_queue(), ^{ ... 做事 我的意思是,在这两种情况下,您都在触发要在主线程上执行的块,这正是应用程序运行的位置,这无助 ..

如何使用 dispatchQueues 创建参考循环?

我觉得我一直误解了何时创建引用循环.在我过去认为几乎任何你有一个块的地方,编译器都强迫你写 .self 之前,这表明我正在创建一个引用循环,我需要使用 [弱自我]在. 但以下设置不会创建参考循环. 导入基础导入 PlaygroundSupportPlaygroundPage.current.needsIndependentExecution类使用队列{var 属性:Int = 5变量队列: ..