在 Swift 中以随机间隔定期调用函数

call function periodically at random intervals in Swift

我正在尝试以随机间隔调用一个函数 10 次。

我怎样才能做到这一点?

我确实想出了一个方法,但是太丑了。它看起来像这样:

    var counter = 0
    NSTimer.scheduledTimerWithTimeInterval(arc4random_uniform(4)+2, target: self, selector: Selector("createNewTimer"), userInfo: nil, repeats: false)

    func createNewTimer(){
    // PERFORM STUFF YOU NEED TO
     counter++

     if counter <= 10{
        NSTimer.scheduledTimerWithTimeInterval(arc4random_uniform(4)+2, target: self, selector: Selector("createNewTimer"), userInfo: nil, repeats: false)
     }
    }

有没有更好的随机调用函数的方法?

如果您需要随机间隔,那么恐怕以上是最好的解决方案。如果时间间隔相同,则可以将其设置为 repeats:true。但你不是。

在操场上试试这个。希望对您有所帮助:

    func after(delay: Double, block: () -> Void) {

        let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC)))

        dispatch_after(delayTime, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
            block()
        }
    }

    func repeatBlock(counter: Int = 1, times: Int, block: () -> Void) {

        after(Double(arc4random_uniform(4) + 2)) {

            block()

            if counter < times {
                repeatBlock(counter + 1, times: times, block: block)
            }
        }
    }

    //client's code
    var counter = 0
    repeatBlock(times: 10) {
        //your code here
        print(NSDate())
    }
    sleep(100)