问题标签 [dispatch-queue]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 为什么同步代码块总是在主线程上调用?
我用 DispatchQueue 做了简单的测试:
它打印出来:
为什么这段代码在主线程上执行?它应该在后台线程上执行(它被添加到后台队列中),对吧?
swift - 创建执行动画的等待队列
我目前正在制作一个快速动画。此动画由另一个函数在不稳定的时间间隔内触发(连接到服务器)。动画需要 2 秒才能完成,但它可能在完成之前被触发。这就是为什么我正在考虑创建一个等待队列来存储触发事件,直到动画完成并且可以重新启动。所以一方面我必须锁定动画功能,直到它再次准备好,另一方面我需要某种存储来存储传入的事件。我已经在考虑调度组,但不知道如何使用它们。对于我可以解决这个问题的方向的任何意见,我都会非常高兴。
触发功能:
ios - NSManagedObject 在指定队列上使用
我有一个在后台队列上运行的后台任务。我需要在这个任务中加载一些 NSManagedObjects。我知道我需要使用私有上下文,但是如何将此上下文绑定到我现有的后台队列,以便我可以在后台任务中使用这个 NSManagedObjects?我应该在这个后台任务中执行,performBlock
或者performBlockAndWait
我应该只从performBlock
私有的 UI 线程调用NSManagedObjectContext
并使用这个上下文中的队列来执行任何后台任务,包括加载保存 NSManagedObjects 和其他后台任务,如与 rest-api 通信等......
我只是不确定是否可以使用上下文中的此队列来执行与 CoreData 无关的任何其他任务NSManagedObjects
?如果不是如何使用NSManagedObjects
我为我的任务创建的队列中的那些?
swift - 如果我将 Dispatch.main.async 块放入 Dispatch.global.async 会发生什么?
我有一个案例,我在后台线程中的 Dispatch.global 中将数据保存到 Realm 数据库,然后在同一个线程中我调用 Dispatch.main.async 从 Realm 获取数据并更新 UITableView 数据。
问题是我得到的数据数量减少了(data.count)。假设总数据数为 10,那么有时我有时会得到所有数据,有时会少于 10。
为什么会这样?
以下是示例代码片段
在上面的代码中 removeDataFromRealm()、saveDataToRealm(data)、getDataFromRealm() 是领域类静态函数,我在其中保存、删除、从领域数据库中获取数据
我已经从我理解的所有方面调试了代码,它保存(saveDataToRealm(data))所有数据,然后获取(getDataFromRealm())数据,根据我的理解,为什么它有时会向我发送更少的数据
在获取数据时,RealmManager getDataFromRealm() 静态方法没有应用过滤器。
假设上面的代码进入竞争状态,那么下面的代码片段会发生什么
由于 getImageFromServer() 首先获取数据,然后 Dispatch.main.async 在将“Data(contentsOf: url)”转换为显然需要时间的数据后执行。
为什么在上述情况下它的工作方式不同?
ios - 用于加载 UIImages 产生意外结果的调度
我正在构建一个应用程序,该应用程序具有多个图像(计划),这些图像(计划)在带有页面内容的滚动视图上加载和设置。我正在尝试在主线程上加载第一张图像,然后从后台线程的索引中加载周围的图像。当我需要使用加载的数据设置它们的图像时,所有 UIImageViews 都在一个数组 (planImages) 中以供参考。
问题是图像并不总是使用最近加载的图像进行更新。这是我第一次使用 Dispatch,所以我做错了什么吗?这是给我问题的代码部分。
ios - Will a Serial DispatchQueue wait if a task spawns a different thread
Serial dispatch queues will execute their tasks one at a time. But what if I have task1 and task2 in the queue. task1 one starts execution and calls a function with a completion block (which I assume will use a different thread to execute). At this point, I believe task1 will exit, even though the completion block has not yet been called. Is it a possibility that task2 will start executing before the completion block from task 1 is executed?
ios - 在指定时间段内运行和暂停 ARSession
我正在开发带有手势识别的ARKit
/ Vision
iOS 应用程序。我的应用程序有一个简单的 UI,其中包含单个UIView
. 根本没有ARSCNView
/ ARSKView
。我将一系列捕获的内容ARFrames
放入CVPixelBuffer
然后用于VNRecognizedObjectObservation
.
我不需要会话中的任何跟踪数据。我只currentFrame.capturedImage
需要CVPixelBuffer
. 而且我需要以 30 fps 的速度捕获 ARFrame。60 fps 是过高的帧速率。
preferredFramesPerSecond
在我的情况下,实例属性绝对没用,因为它控制渲染ARSCNView
/的帧速率ARSKView
。我没有 ARViews。而且它不会影响会话的帧速率。
因此,我决定使用run()
和pause()
方法来降低会话的帧速率。
问题
我想知道如何在指定的时间段内自动run
和一个ARSession?和方法pause
的持续时间必须是(或 0.016 秒)。我想可能通过. 但我不知道如何实现它。run
pause
16 ms
DispatchQueue
怎么做?
这是一个伪代码:
PS我的应用程序中既不能使用 CocoaPod 也不能使用 Carthage。
更新:关于如何currentFrame.capturedImage
检索和使用 ARSession。
ios - 如何回到 Xcode 中的主线程?
我正在使用我的 SignUpViewController 创建一个帐户,当用户使用不符合密码规范的密码注册帐户时,程序应该发出警报。相反,出于某种原因,我不断得到:
由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“-[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] 只能从主线程调用。”
我怎样才能回到主线程,以便程序只会发出警报?
这是该视图控制器的代码:
ios - iOS (Swift):使用 DispatchQueue.main.asyncAfter 制作充满活力的按钮 Flash
我试图UIButton
通过调用以下flash()
给出的方法来点亮一堆充满活力的子类实例:
使用此功能,我可以循环遍历一组按钮,触发持续 0.1 秒的闪烁效果,闪烁是由活力层改变其flashView
后面的实例引起的。
DispatchQueue.main.asyncAfter
通过在调用中调用此函数是否有任何缺点DispatchQueue.main.asyncAfter
?
swift - Swift - 带有条件的 GCD 计时器
我使用 Firebase 上传带有进度指示器的文件:
我想实现一个条件:如果 % 的值(例如:23%)被卡住 15 秒或更长时间,它会取消上传。
我在想一个 GCD 定时器:
但我不知道如何链接 15 秒内未更新的 a 值的条件。任何想法 ?
非常感谢,