- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有这段代码:
DispatchQueue.main.asyncAfter(deadline: .now() + (delay * Double(isDelayAccounted.hashValue)) + extraDelay) {
self.isShootingOnHold = false
self.shoot()
self.shootingEngine = Timer.scheduledTimer(timeInterval: (Double(60)/Double(self.ratePerMinute)), target: self, selector: #selector(ShootingEnemy.shoot), userInfo: nil, repeats: true)
}
现在,我希望能够停止该线程的执行。我怎样才能阻止它被执行?例如,3 秒后,我决定不再执行它,所以我想停止它。
最佳答案
您可以使用 DispatchWorkItem
。它们可以在 DispatchQueue
上安排并在执行前取消。
let work = DispatchWorkItem(block: {
self.isShootingOnHold = false
self.shoot()
self.shootingEngine = Timer.scheduledTimer(timeInterval: (Double(60)/Double(self.ratePerMinute)), target: self, selector: #selector(ShootingEnemy.shoot), userInfo: nil, repeats: true)
})
DispatchQueue.main.asyncAfter(deadline: .now() + (delay * Double(isDelayAccounted.hashValue)) + extraDelay, execute: work)
work.cancel()
关于swift - 停止在主线程上运行的 DispatchQueue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48128049/
dispatch_apply将调度队列作为参数,它允许您选择要在哪个队列上执行 block 。 我的理解是,Swift中的DispatchQueue.concurrentPerform是用来代替dis
我试图了解 Dispatch Sync 和 Dispatch Async,我知道它以 GCD 的同步和异步方式执行。但是当我尝试下面的代码时,它给了我奇怪的场景。 我在 Playground 和同步块
当我在主线程上并尝试 DispatchQueue.main.async 时,它不会使应用程序崩溃,但 DispatchQueue.main.sync 会。为什么会这样? 最佳答案 根据 Docs sy
我一直在用DispatchQueue.main.async长时间执行UI相关操作。 Swift 同时提供 DispatchQueue.main.async和 DispatchQueue.main.sy
我正在阅读教程: https://www.raywenderlich.com/148513/grand-central-dispatch-tutorial-swift-3-part-1 并且遇到了 Q
我试图了解 DispatchQueues 的真正工作原理,我想知道假设 DispatchQueues 有自己的管理线程是否安全?例如,让我们以串行队列为例。在我的理解中——因为它是串行的,新任务只能在
So my goal here is to basically perform a query in a while loop and append results of the query to m
我有一个简单的应用程序,其工作原理如下: 应用加载时使用默认图像 收到点击后,将从列表中加载随机图像 如果 5 秒内没有收到点击,我们将重置回默认图像 我正在尝试使用 DispatchQueue 和
我想为不同的 http 请求设置不同的优先级,并且我希望能够立即停止/暂停一些请求,并在我有一个 High 的请求时只执行其中的一些请求 优先级。我打算使用不同的方法,但现在似乎所有方法都已弃用: 1
我正在异步创建图像,然后在主线程上更新 UI。例如 imageLoadingQueue.async { // Creates a new image, caches it. let n
试图制作线程安全数组,但它不像我预期的那样工作 import Foundation import PlaygroundSupport PlaygroundPage.current.needsIndef
我需要在 Swift 中执行搜索操作,我需要使用 UISearchbar。 在 textDidChange 事件中,我需要调用 Web API,解析响应,然后更新数组,然后开始搜索更新后的数组。 但不
我对 DispatchQueue 东西(包括 DispatchGroups、Qos 等)不是很熟悉。我现在有一个担忧。就像,我有一个 ViewController 被重用于 Android 的 Vie
我正在尝试延迟循环某些内容(只是作为概念证明)这是为了其他目的。但为了简化它,这里有一个例子。 所以在这个例子中,我有一个带有“文本”的字符串,我想循环添加另一个字符串,比方说 10 次。唯一的问题是
我正在尝试创建一个使用 USPS API 获取数据的简单包裹跟踪应用程序。 callRestService 方法成功获取数据,其完成处理程序 serviceCallback(设置 unparsedXm
好吧,我已经经历了大量的问题和答案,我知道对它的理解,但是当我尝试一些代码时,我得到了一些不符合这些理论的结果。 目前我的理解: Sync:一旦 block 内的所有任务都被执行,控制将返回。 异步:
我正在为一个应用程序项目编写一个简单的缓存框架,并在闭包中使用 GCD 和 DispatchQueues 来保存和检索框架中的对象。 在编程时,我一次又一次地质疑自己是否正确地完成了它。这是我正在做的
我有这段代码: DispatchQueue.main.asyncAfter(deadline: .now() + (delay * Double(isDelayAccounted.hashVa
这是一个奇怪的问题,我似乎找不到任何帮助。在 Swift 3 上,尝试调用主线程我尝试使用 DispatchQueue.main.async,但它无法编译。 任何想法都会有所帮助。 最佳答案 试试这段
在 Swift 3 中,创建 DispatchQueue 实例: DispatchQueue(label: String, qos: DispatchQoS,
我是一名优秀的程序员,十分优秀!