2017-09-23 2 views
0

In früheren Versionen von Swift funktioniert dieser Code perfekt.Wie schreibe ich GCD asyncAfter in Swift 4?

DispatchQueue.main.asyncAfter(deadline: .now() + delay) { timer in 
    self.setOriginalState() 
    self.shakeAnimation() 
} 

Aber in Swift 4 die folgenden Fehler angezeigt:

Mehrdeutige Bezug auf Mitglieder asyncAfter (Frist: qos: flags: execute :) '

Wie man ein erstellen Verzögerung vor dem Ausführen einer Sequenz von Code in Swift 4?

+1

einfach "timer in" entfernen. Dann gut funktionieren. –

+1

"In früheren Versionen von Swift funktioniert dieser Code perfekt" Trotzdem war es immer falsch. Alles, was passiert ist, ist, dass der Compiler aufgehört hat, so zu vergeben. – matt

Antwort

3

Probieren auf dem Spielplatz gibt es kein Problem, das ist nur "fehlt" ist die "Timer" -Referenz.

DispatchQueue.main.asyncAfter(deadline: .now() + 3) { 
    print("Dispatching after") 
} 

DispatchQueue.main.asyncAfter(deadline: .now() + 3, qos: .userInteractive, flags: []) { 
    print("Dispatching after") 
} 

Sie scheinen beide zu funktionieren, sind Sie sicher, dass das Problem nicht woanders ist?

+0

Danke, Andrea Herr ... arbeite perfekt. –

Verwandte Themen