问题标签 [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.
swift - 如何在 Swift 中测量 DispatchQueue 并发异步中的代码块执行时间?
假设我有这种功能和 DispatchQueue 逻辑。假设当synchLatest()
被调用时它会触发"Code Block 1"
两次。
应该怎么"Code Block 1"
做?1.7 seconds
5 seconds
我是否以错误的方式在这里测量代码执行时间?
ios - iOS 应用程序因 EXC_BREAKPOINT (SIGTRAP) 而崩溃
我有一个在启动时崩溃的应用程序。我已经确定了问题的根源,但我似乎无法弄清楚如何解决它。让我先解释一下我的工作:
我有一个 LocationManager 来检查用户是否进入某个区域(使用 startRegionMonitoring)。如果是这样,则计划在 5 分钟内触发本地通知。但是,如果此人在 5 分钟内再次离开,则本地通知将被取消。我这样做是因为用户可以通过建筑物而无需实际进入它。当用户自己打开应用程序时,它还会取消任何待处理的通知(在这 5 分钟内)。
发生这种情况时,应用程序会在启动时崩溃。崩溃报告表明了这一点:
起初,我没有在主线程上执行取消操作——我认为这是导致崩溃的原因。所以我使用了 Dispatch Queue 并认为问题会得到解决,但它仍然存在。我的代码willEnterForeground
:
我不确定如何解决这个问题。知道这个提醒是从后台发送的可能很重要,所以当应用程序不在前台时。我在后台打开了定位服务,当我留在该位置时一切正常,但是当我在这 5 分钟内再次退出时出现问题,因此需要取消通知。
有任何想法吗?
ios - Firebase 查询未按正确顺序执行?
我获取数据并在 tableView 中显示,问题是数据没有按正确的顺序执行。
我努力了:
但它也不起作用,第二个 firebase 调用的执行顺序不正确。
swift - 有没有一种特定的方法可以将 DispatchWorkItems 附加到 DispatchQueue 而不是在代码中重新声明它们?
我有几个 Dispatch 工作项要在队列上执行,我不想重新声明代码,我想将它们传递给数组或列表,DispatchWorkItems
然后将其注入调度队列有没有办法实现这一点?
/// 我是如何实现这样的目标的
// 这可能吗 ?
swift - 在继续下一个请求或调度队列中的下一个 DispatchWorkItem 之前,我如何等待接收来自 DispatchWorkItem 的响应
我有一组调度工作项,如何等到一个工作完成后再继续队列中的下一个工作?
我如何简化上述方法或如何应用semaphores
或任何其他可接受的方法来帮助我等到我得到 a 的响应,DispatchworkItem
然后再继续执行DispatchworkItem
队列中的下一个
从服务器获取数据的模型视图如下所示
ios - 完成处理程序调用两次(带线程)
我目前正在 Xcode 10 Playground (Swift 5) 中测试这段代码:
问题是“hi”和“nil”都被打印出来了。
如果我摆脱线程,它可以正常工作,但它似乎DispatchQueue.main.async
在第一个有机会返回之前到达第二个。
在我的实际代码中的“一些缓慢的东西”中还有很多东西在发生,if
但我不能依赖在调用第二次返回之前花费足够长的时间来返回。
我该如何做到这一点:让函数在后台线程中运行,但在主线程上只返回一次(就像通常没有线程的代码一样)?
ios - 多线程 - Swift 中的 DispatchQueue asyncAfter 延迟
我正在使用以下代码每秒定期调用一个函数。问题是延迟实际上是 1.1 秒,并且最终会越来越漂移,这可以在 NSLogs 中看到(并且它在代码的其他部分以及除了 NSLog 之外的其他部分中也可见)。我做错了吗,还是应该使用计时器?
ios - 无法在 dispatchqueue 中手动控制 performSegue()
我有一个按钮对象,它运行一个用于计算的后台线程和一个用于 UI 更新的主线程。毕竟完成后,我想使用 移动到另一个视图控制器performSegue(withIdentifier: "thirdViewController", sender: self)
,但它在dispatchQueue
. 我之前用过performSegue()
很多次在视图控制器之间切换,我总是可以手动控制它。相反,它几乎立即移动到下一个 ViewController,而无需先完成计算。
我尝试使用self.present(thirdViewController(), animated: true, completion: nil)
, 并self.navigationController?.pushViewController(thirdViewController(), animated: true)
更改 ViewController 但他们只是给了我一个黑屏。