swift2 循环和分派队列

8qgya5xd  于 2022-11-06  发布在  Swift
关注(0)|答案(1)|浏览(156)

我有一个调度队列,它必须无限运行。所以我试图让它在一个do while循环,使线程连续运行,但当我试图这样做,我得到一个空白屏幕。
下面是代码:

var i = 1
    do{
    dispatch.main(3)
    {
       self.myfunction()
    }
    i+=1
    }while(i>0)

我不明白,为什么会发生这种情况?还有,如何每隔几秒钟就能得到一个调度电话?

zqdjd7g9

zqdjd7g91#

这是一个NSTimer的扩展,来自EZSwiftExtensions。

extension NSTimer {
    public static func runThisEvery(seconds seconds: NSTimeInterval, handler: NSTimer! -> Void) -> NSTimer {
        let fireDate = CFAbsoluteTimeGetCurrent()
        let timer = CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, fireDate, seconds, 0, 0, handler)
        CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, kCFRunLoopCommonModes)
        return timer
    }
}

代码的作用很容易理解。创建一个run循环计时器,将其添加到run循环中,这样它就可以实际运行并触发,并返回该示例,以便稍后可以停止它。

let timer = NSTimer.runThisEvery(seconds: 3) { _ in self.myFunction() }

要停止它,只需:

timer.invalidate()

相关问题