grand-central-dispatch相关内容
我的 iOS 应用程序的视图控制器中有一个运行时间相对较长的任务(5-10 秒).它通过 GCD 在后台异步运行.用户可以在此任务期间进行 UI 操作,因此他也可以按返回按钮导航到上一个视图. 我的代码很简单: dispatch_queue_t queue = dispatch_queue_create("com.x.y.z", NULL);dispatch_async(队列,^{Test
..
..
我正在使用 dispatch_async 在后台运行一堆项目,有时我想杀死队列中的内容 - 这可能吗?例如,此代码在视图上运行,然后用户返回屏幕.无论返回导航如何,所有这些触发的操作都会继续运行.理想情况下,我想阻止这些项目运行: dispatch_async(dispatch_get_global_queue(2, 0), ^{for (int i=0; i 如果我创建一个队列并命名它,然后
..
我正在开发一款 Sprite Kit 游戏,我需要进行一些多线程处理以保持健康的 fps. 更新时我调用一个函数来创建大量 UIBezierPaths 并使用 C++ 静态库合并它们. 如果我有超过 10 个形状,帧速率会急剧下降,所以我决定尝试 GCD 并尝试使用单独的线程解决问题. 我把它放在 didMoveToView 中: queue = dispatch_get_gl
..
我有一个 ViewController,里面有一个 collectionView.我在 ARSCNView 中显示 collectionView 单元格的内容. 当我将 ViewController 的 view 属性设置为 Material 的 content 属性时,我从问题中得到了错误. material.diffuse.contents = self.myViewControlle
..
我在使用 NScache 从 UICollectionView 中的网络服务器加载图像时遇到了一些问题. 问题: 图片显示不正确: 有时它们不会显示在相应的单元格中 或
..
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) ->空白
..
我用 Swift 创建了一个游戏,其中涉及怪物的出现.怪物的出现和消失,基于定时器使用如下: func RunAfterDelay(_ delay: TimeInterval, block: @escaping()->()){让时间 = DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC)))/Double(NSEC_PER
..
我有一个函数 doEverything 需要一个完成块.它调用另外两个函数,doAlpha 和 doBeta,它们都有完成块.这两个函数应该异步运行.我想在其他两个函数都调用了它们的完成块之后调用 doEverything 的完成块. 目前,它看起来像这样: func doEverything(completion: @escaping (success) -> ())) {var alp
..
我正在使用 Swift 3 DispatchGroup 等待多个异步操作完成(根据 this answer 工作完美,符合预期. 有没有办法检查已经输入了多少操作,比如 dispatchGroup.count 或类似的东西? 解决方案 你可以在调试说明中看到进入组的次数: OS_dispatch_group: group[0x60000221d950] = { xref = 3
..
我不知道如何让调度计时器在 Swift 3.0 中重复工作.我的代码: let queue = DispatchQueue(label: "com.firm.app.timer",属性:DispatchQueue.Attributes.concurrent)让计时器 = DispatchSource.makeTimerSource(flags: DispatchSource.TimerFlags
..
好的,所以我在 Xcode 8 中发现了新的 Swifty Dispatch API.我很高兴使用 DispatchQueue.main.async,我一直在浏览 Xcode 中的 Dispatch 模块以找到所有新的 API. 但我也使用 dispatch_once 来确保诸如单例创建和一次性设置之类的事情不会被执行多次(即使在多线程环境中)...和 dispatch_once 在新的
..
我正在努力理解 DispatchSourceTimer、定时器 和 asyncAfter(在我的例子中用于安排需要每 X 秒运行一次的任务,尽管了解计时器的差异可能对有用)(或者除了列出的计时器之外,Swift 中还有其他(更有效的)调度机制吗?). Timer 需要在它启动的当前队列上有一个活动的运行循环.DispatchSourceTimer 不需要.Timer 防止 CPU 进入空闲状
..
我有一个大数组,我想通过将它的切片交给一些异步任务来处理它.作为概念证明,我编写了以下代码: class TestParallelArrayProcessing {让数组:[Int]变量摘要:[Int]在里面() {数组 = 数组(计数:500000,重复值:0)对于 i 在 0 ..
..
在 CollectionView 中,我显示来自 parse.com 的数据.成功找回.但无法在单元格中显示.我收到错误为数组出站.我发现了错误,解析以异步方式运行.但是,在解析结束之前,集合视图被加载.所以我无法在单元格中显示值.它正在抛出一个错误.如何停止所有过程,直到解析完全加载?请指导我.我的代码如下: //VIEWCONTROLLER 有 collectionViewvar myLis
..
场景: 用户点击一个按钮,要求对地址簿进行某种修改. 调用了一个方法来启动此修改并显示警报视图. 为了显示警报视图并保持 UI 响应,我使用了 dispatch_queue: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{dispatch_sync(dispatch_g
..
Apple 的 Grand Central Dispatch 参考资料说: "...如果您的应用程序需要在系统——例如,如果它需要操作文件描述符,Mach端口、信号或定时器.GCD 不限于系统级应用程序,但在将其用于更高级别的应用程序之前,您应该考虑 Cocoa 中是否提供了类似的功能(通过NSOperation 和块对象)会更容易使用或更多适合您的需求.". http://devel
..
我一直在我的应用程序中成功使用大型中央调度,但我想知道使用这样的东西的真正优势是什么: dispatch_async(dispatch_get_main_queue(), ^{ ... 做事 甚至 dispatch_sync(dispatch_get_main_queue(), ^{ ... 做事 我的意思是,在这两种情况下,您都在触发要在主线程上执行的块,这正是应用程序运行的位置,这无助
..
我觉得我一直误解了何时创建引用循环.在我过去认为几乎任何你有一个块的地方,编译器都强迫你写 .self 之前,这表明我正在创建一个引用循环,我需要使用 [弱自我]在. 但以下设置不会创建参考循环. 导入基础导入 PlaygroundSupportPlaygroundPage.current.needsIndependentExecution类使用队列{var 属性:Int = 5变量队列:
..