2016-06-27 13 views
0

我有這個代碼,它調用一個稱爲tapped coin的函數,但我需要這個延遲函數來繼續無限地重複,這樣用戶就可以模擬這個自動tap。如何使時間延遲無限重複

delay(1) { 
    for i in 0...5 { 
     print(i) 
     self.tappedCoin() 
    } 
} 

延時功能看起來像這樣

func delay(delay: Double, closure:()->()) { 
    dispatch_after(
     dispatch_time(
      DISPATCH_TIME_NOW, 
      Int64(delay * Double(NSEC_PER_SEC)) 
     ), 
     dispatch_get_main_queue(), 
     closure 
    ) 
} 

我如何能得到這個繼續重複每一秒,而不會影響其他任何的代碼?

回答

0

像這樣的事情?您可以通過分配coinsEnabled = false

var coinsEnabled = true 
var counter = 0 

func infiniteLoop() { 
    print(counter) 
    tappedCoin() 
    delay(1) { 
     [weak self] in 
     if self?.coinsEnabled == true { 
      self!.counter += 1 
      self!.infiniteLoop() 
     } 
    } 
} 
+0

'要是讓S =自哪裏s.coinsEnabled {'看起來好了很多,你就不必強制停止展開這個循環。 – EmilioPelaez

-1

你的代碼正在做什麼等待一秒鐘,然後立即執行五次,即執行self.tappedCoin()

做到這一點的最好方法是使用每秒重複一次的NSTimer。確保存儲它,以便在合適的時候停下來。

(我不打算進入詳細NSTimer,因爲有成千上萬的資源,因此一個網頁)