停止/暂停swift应用程序一段时间

时间:2014-07-13 20:16:40

标签: cocoa swift nstimer

我的应用使用NSTimer对象的多个线程。

在一个函数中(随机时间随机调用,而不是固定的延迟)我希望它暂停整个应用程序,只暂停1 second的线程。我有以下代码:

[self performSelector:@selector(subscribe) withObject:self afterDelay:3.0 ];

哪个是客观C,我尝试将其翻译成Swift:

self.performSelector(Selector:changeColourOfPage(), withObject: self, afterDelay: 1.0)

但是我收到了错误Missing argument for parameter 'waitUntilDone' in call,当我把它放进去时,它说它想要参数modes,但当我把它放进去时Extra argument modes

我无法弄清楚如何暂停应用程序及其所有线程几秒钟,然后继续正常运行?

有什么想法吗?

3 个答案:

答案 0 :(得分:11)

在Swift中没有performSelector方法。您可以使用dispatch_after获取延迟功能。

let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(NSEC_PER_SEC * 1))
dispatch_after(delayTime, dispatch_get_main_queue()){
    changeColourOfPage() 
}

答案 1 :(得分:1)

Swift 3.1中的另一种方式

DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1)) {
    changeColourOfPage()
}

您可以将.milliseconds(1000).microseconds(1_000_000).nanoseconds(1_000_000_000)等其他单位替换为时间间隔。

答案 2 :(得分:0)

很抱歉回答了一个老问题,但是出现了更好的方法 -

import Darwin //Put this line at the beginning of your file
func pauseForAMoment() {

        sleep(1)
        changeColorOfPage()

}