2016-06-27 17 views
0

Ich habe diesen Code und es ruft eine Funktion namens angezapft Münze, aber ich brauche diese Verzögerung Funktion, um unbegrenzt zu wiederholen, damit der Benutzer diese automatische Tap simulieren kann.Wie man Zeitverzögerung wiederholt unendlich in Swift

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

Die Delay-Funktion sieht wie folgt aus

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

Wie kann ich dies jede Sekunde fortzusetzen erhalten zu wiederholen, ohne irgendetwas anderes in den Code zu beeinflussen?

Antwort

0

So etwas wie das? Sie können diese Schleife stoppen, indem 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

Zuweisung 'wenn let s = Selbst wo s.coinsEnabled {' würde viel besser aussehen und Sie müssten nicht zwangs auspacken. – EmilioPelaez

-1

Was Ihr Code macht, wartet auf eine Sekunde und führt dann self.tappedCoin() fünf Mal sofort aus.

Der beste Weg, dies zu tun wäre, eine NSTimer zu verwenden, die jede Sekunde wiederholt. Stellen Sie sicher, dass Sie es speichern, damit Sie es stoppen können, wenn es angemessen ist.

(Ich werde nicht mit NSTimer ins Detail gehen, weil es in einer SO die Bahn Tausende von Ressourcen)

Verwandte Themen