La syntaxe est simplement:
// to run something in 0.1 seconds
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
// your code here
}
Notez la syntaxe ci-dessus d'ajouter seconds
comme Double
semble être une source de confusion (en particulier parce que nous étions habitués à ajouter nsec). « AJOUT secondes comme Double
» fonctionne syntaxe parce deadline
est un DispatchTime
et, dans les coulisses, il y a un opérateur +
qui prendra un Double
et d'ajouter que de nombreuses secondes à la DispatchTime
:
public func +(time: DispatchTime, seconds: Double) -> DispatchTime
Mais, si vous voulez vraiment ajouter un nombre entier de msec, μs ou nsec au DispatchTime
, vous pouvez également ajouter un DispatchTimeInterval
à un DispatchTime
. Cela signifie que vous pouvez faire:
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(500)) {
os_log("500 msec seconds later")
}
DispatchQueue.main.asyncAfter(deadline: .now() + .microseconds(1_000_000)) {
os_log("1m μs seconds later")
}
DispatchQueue.main.asyncAfter(deadline: .now() + .nanoseconds(1_500_000_000)) {
os_log("1.5b nsec seconds later")
}
Tous ces fonctionnent de manière transparente en raison de cette méthode de surcharge distincte pour l'opérateur +
dans la classe DispatchTime
.
public func +(time: DispatchTime, interval: DispatchTimeInterval) -> DispatchTime
Pour plus d'informations sur le processus de migration peuvent être trouvés ici: [https://swift.org/migration-guide/](https : //swift.org/migration-guide/) La section "Dispatch" est-elle pertinente pour cette question – tonik12
si votre question est "UInt64"? – Honey