首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >swift中的延迟函数

swift中的延迟函数
EN

Stack Overflow用户
提问于 2015-03-03 08:03:21
回答 3查看 149.6K关注 0票数 154

我没有代码样本,因为我不知道怎么做,但是有人能告诉我如何用swift将函数延迟一段时间吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-03 08:13:05

您可以使用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()
})

Swift 3和Swift 4

DispatchQueue.main.asyncAfter(deadline: .now() + 10.0, execute: {
    self.functionToCall()
})

Swift 5或更高版本

 DispatchQueue.main.asyncAfter(deadline: .now() + 10.0) {
        //call any function
 }
票数 425
EN

Stack Overflow用户

发布于 2015-04-19 20:10:03

 NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(3), target: self, selector: "functionHere", userInfo: nil, repeats: false)

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

票数 24
EN

Stack Overflow用户

发布于 2016-02-23 08:32:13

用于向延迟函数添加参数。

首先设置一个字典,然后将其添加为userInfo。使用计时器作为参数来解包信息。

let arg : Int = 42
let infoDict : [String : AnyObject] = ["argumentInt", arg]

NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(3), target: self, selector: "functionHereWithArgument:", userInfo: infoDict, repeats: false)

然后在被调用的函数中

func functionHereWithArgument (timer : NSTimer)
{
    if let userInfo = timer.userInfo as? Dictionary<String, AnyObject>
    {
         let argumentInt : Int = (userInfo[argumentInt] as! Int)
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28821722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档