当前位置: 首页 > 面试题库 >

NSTimer-如何在Swift中延迟

漆雕兴平
2023-03-14
问题内容

我在延迟游戏中电脑的移动时遇到问题。

我找到了一些解决方案,但在我的情况下它们不起作用,例如

var delay = NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: nil, userInfo: nil, repeats: false)

我试图将此与功能一起使用,fire但也没有任何效果。

还有其他可能性吗?


问题答案:

迅捷3

使用GCD:

let delayInSeconds = 4.0
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delayInSeconds) {

    // here code perfomed with delay

}

或使用计时器:

func myPerformeCode() {

   // here code to perform
}
let myTimer : Timer = Timer.scheduledTimer(timeInterval: 4, target: self, selector: #selector(self.myPerformeCode), userInfo: nil, repeats: false)

迅捷2

使用GCD:

let seconds = 4.0
let delay = seconds * Double(NSEC_PER_SEC)  // nanoseconds per seconds
let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))

dispatch_after(dispatchTime, dispatch_get_main_queue(), {

   // here code perfomed with delay

})

或使用计时器:

func myPerformeCode(timer : NSTimer) {

   // here code to perform
}
let myTimer : NSTimer = NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: Selector("myPerformeCode:"), userInfo: nil, repeats: false)


 类似资料:
  • 问题内容: 在这种情况下,永远不会调用timerFunc()。我想念什么? 问题答案: 您可以创建一个计划的计时器,该计时器自动将其自身添加到运行循环并开始触发: 迅捷2 斯威夫特3,4,5 或者,您可以保留当前代码,并在准备就绪时将计时器添加到runloop中: 迅捷2 斯威夫特3,4,5

  • 问题内容: 我试过了 但是,我说错了 问题答案: 这将起作用: 对于Swift 4,要获取选择器的方法必须公开给Objective-C,因此必须将属性添加到方法声明中。

  • 问题内容: 我想暂时暂停我的应用。换句话说,我希望我的应用执行代码,但是在某个时候暂停4秒钟,然后继续执行其余的代码。我怎样才能做到这一点? 我正在使用Swift。 问题答案: 如果要从UI线程调用该方法,则可以考虑使用或调度计时器,而不是进行睡眠(这会锁定您的程序)。 但是,如果您确实需要延迟当前线程: 这使用UNIX中的功能。

  • 问题内容: 在早期版本的Swift中,可以使用以下代码创建延迟: 但现在,斯威夫特3时,Xcode自动改变6个不同的东西,但随后出现以下错误:“无法转换到预期值又名”。 在Swift 3中运行一系列代码之前,如何创建延迟? 问题答案: 经过大量研究,我终于找到了答案。 这会在Swift 3和Swift 4中创建所需的“等待”效果。

  • 问题内容: 我有一个计时器,一旦它响起,它就会运行来重新启动警报。 它的选择器功能设置一个模式标志,并调用原始功能,该功能使用新的分钟和秒常量设置警报,还向用户发送会话已重新启动的通知。 我有一个菜单项,该菜单项会更新剩余时间 因此,我一直在打开它来检查我的警报确实确实重新启动,并且一旦警报为零便显示通知。它可以工作,但是当我打开菜单并将其降低到零时,它将停留在0:00,并且直到我单击菜单后,计时

  • 本文向大家介绍在 Swift (iOS)延迟后如何调用方法?,包括了在 Swift (iOS)延迟后如何调用方法?的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将看到如何使用Swift延迟方法调用。在这里,我们将看到如何以两种方式实现相同的目标, 所以我们开始吧 我们将在Playground中看到两个示例, 步骤1-打开Xcode→New Playground。 在第一种方法中,我们将使