相关疑难解决方法(0)

取消Swift中的定时事件?

我想在一个事件的10秒内运行一段代码,但是我希望能够取消它,这样如果在那10秒之前发生了某些事情,代码将在10秒后不再运行.

我一直在使用它,但它不可取消:

static func delay(delay:Double, closure:()->()) {
  dispatch_after(
    dispatch_time(
      DISPATCH_TIME_NOW,
      Int64(delay * Double(NSEC_PER_SEC))
    ),
    dispatch_get_main_queue(), closure
  )
}
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?

events swift

51
推荐指数
4
解决办法
2万
查看次数

如何取消特定的DispatchQueue.main.asyncAfter事件?

这个问题早已被问到了。但是我找不到适合当前Swift版本的不错的解决方案。


Swift 4-如何取消对的特定通话DispatchQueue.main.asyncAfter

DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
    // my code
}
Run Code Online (Sandbox Code Playgroud)
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
    // just cancel this event!
}
Run Code Online (Sandbox Code Playgroud)

grand-central-dispatch swift

11
推荐指数
0
解决办法
5711
查看次数

Swift 2到3迁移dispatch_get_global_queue

我有以下代码,我一直试图从swift 2转换为swift 3.这是我到目前为止所拥有的.

DispatchQueue.async(group: DispatchQueue.global(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),execute: {
            self.controllerDelegate?.codeToRun(progressWindowViewController: self)
        })
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,指出无法使用类型(int,int)的参数列表调用'global'.我知道全局队列需要这个,除非他们在swift 3中改变它吗?在Swift 3中执行全局队列的正确方法是什么?

以前的Swift 2 Equivlent

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),{
            self.controllerDelegate?.codeToRun(self)
        })
Run Code Online (Sandbox Code Playgroud)

dispatch-async swift swift2 swift3 ios10

1
推荐指数
1
解决办法
3869
查看次数

如何在swift中停止dispatchQueue

我有一个用于introViewController的DispatchQueue,它显示一个11秒的gif然后显示我的登录页面......但是还有一个跳过介绍并显示登录的按钮.当我点击它时,仍在运行的时间和当我在应用程序中导航时,在时间结束时返回登录.

这是我的班级

class GifClass: UIViewController {

@IBOutlet weak var gifImage: UIImageView!
@IBOutlet weak var skipButton: UIButton!


override func viewDidLoad() {
    super.viewDidLoad()

    gifImage.loadGif(name: "promed")

    DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(11)) {

        self.performSegue(withIdentifier: "introLogin", sender: self)
    }

}


@IBAction func skip(_ sender: Any) {


    performSegue(withIdentifier: "introLogin", sender: self)

}

}
Run Code Online (Sandbox Code Playgroud)

如何点击按钮停止时间?

swift dispatch-queue

1
推荐指数
2
解决办法
5045
查看次数