在swift中延迟函数

Coo*_*MAn 118 function delay ios swift

我没有代码可以采样或任何东西,因为我不知道该怎么做,但有人可以请告诉我如何使用swift延迟一段时间的功能?

Far*_*nen 348

您可以使用GCD(在示例中延迟10秒):

斯威夫特2:

let triggerTime = (Int64(NSEC_PER_SEC) * 10)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, triggerTime), dispatch_get_main_queue(), { () -> Void in
    self.functionToCall()
})
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

DispatchQueue.main.asyncAfter(deadline: .now() + 10.0, execute: {
    self.functionToCall()
})
Run Code Online (Sandbox Code Playgroud)

  • 快速注意:你必须在'functionToCall()'上调用self,因为它在一个闭包内.IE self.functionToCall() (6认同)
  • GCD代表"Grand Central Dispatch".Apple将其定义为:_Grand Central Dispatch(GCD)包含语言功能,运行时库和系统增强功能,可为iOS和OS X中多核硬件上的并发代码执行提供系统,全面的改进._您可以找到更多信息[ HERE](https://developer.apple.com/library/ios/documentation/Performance/Reference/GCD_libdispatch_Ref/) (3认同)

Ana*_*and 28

Swift 3版本延迟10秒

    DispatchQueue.main.asyncAfter(deadline: .now() + 10) { [unowned self] in
        self.functionToCall()
    }
Run Code Online (Sandbox Code Playgroud)

  • DispatchQueue.main.asyncAfter(截止日期:.now()+ 10,执行:{something()}) (2认同)

小智 24

 NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(3), target: self, selector: "functionHere", userInfo: nil, repeats: false)
Run Code Online (Sandbox Code Playgroud)

这将调用函数functionHere()3秒延迟

  • 如何在函数functionHere()中发送参数? (3认同)