Ich möchte Timeout und brechen aus dieser Schleife in 5 Sekunden. Einzige Sache, die ich online finden konnte, ist, jede Sekunde eine variable Zählung zu bekommen und dann zu brechen, wenn die Zählung 5 ist, aber ich fragte mich, ob es eine leichtere, weniger kodierte Methode gibt. Bitte helfen Sie!Pause von While-Schleife nach 5 Sekunden in Swift
1
A
Antwort
4
Das Problem mit einer while-Schleife ist, dass es die Verwendung der Anwendung durch den Benutzer blockiert, wenn sie auf dem Hauptthread ist. Stattdessen sollten Sie mit der Aktualisierung des Standorts beginnen und dann einen Hintergrund-Thread mithilfe von GCD planen (vorausgesetzt, Sie sind auf OSX; GCD ist unter Linux noch nicht verfügbar), um den Standort-Manager innerhalb von fünf Sekunden zu deaktivieren. Sie können auch festlegen, dass das Programm in einer Sekunde ausgeführt wird. Überprüfen Sie, ob es vorhanden ist, und versuchen Sie es erneut oder lassen Sie es fünf Sekunden lang laufen.
0
können Sie eine Verzögerung Funktion wie folgt erstellen:
func delay(delay:Double, closure:()->()) {
dispatch_after(
dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC))), dispatch_get_main_queue(), closure)
}
und danach wie folgt Gebrauch:
delay(5){
locationManager.location = //something different from nil or you can try with break sentence ; not sure if with break will work though .
}
Verwandte Themen
- 1. UIAlertView nach 5 Sekunden entfernen Swift
- 2. "Deviceready hat nicht nach 5 Sekunden gefeuert.",
- 3. Alarm senden nach 5 Sekunden, 15 Sekunden ... mit einem Timer
- 4. CSS Elemente automatisch nach 5 Sekunden ausblenden
- 5. entferne neues div nach 5 Sekunden
- 6. JQuery entfernen .append nach 5 Sekunden
- 7. Senden einer Anforderung kontinuierlich nach 5 Sekunden
- 8. CSS Spinnrad nach 5 Sekunden stoppen?
- 9. UI friert für 5 Sekunden nach dem Schließen von UIViewController
- 10. Pause PHP-Array in 5 colums
- 11. Flash: AS3 - Pause für x Sekunden?
- 12. Seltsame 5 Sekunden Pause mit PHP Befehlszeilenschnittstelle (verwandt mit mysql/mysqli Erweiterung)
- 13. laden Seite nach 5 Sekunden ohne Aktualisierung js
- 14. lldb Pause nach SIGSEGV
- 15. Swift Verwendung Pause in guard Aussage
- 16. Pause mp3-Datei in Swift 2.0
- 17. Pause ein SKAction in Spritekit mit Swift
- 18. GAE DevAppServer tötet gewaltsam meine MySQL-Verbindung nach 5 Sekunden
- 19. Schließen Sie den Dialog nach 5 Sekunden mit jquery
- 20. make Div-Text nach 5 Sekunden mit jquery verschwinden?
- 21. Automatische Umleitung auf eine andere XAML-Seite nach 5 Sekunden
- 22. Wie programmiere nächste div automatisch nach 5 Sekunden
- 23. jQuery zeigen für 5 Sekunden dann ausblenden
- 24. Aufnehmen von Bildern in Android alle 5 Sekunden
- 25. Wie warten Sie 5 Sekunden mit jQuery?
- 26. Warten .5 Sekunden vor dem Fortsetzen von Code VB.net
- 27. Datatables aktualisieren einzelne Spalte alle 5 Sekunden
- 28. android, wie ListView alle 5 Sekunden aktualisieren
- 29. Joomla macht meine Anfrage 5 Sekunden warten
- 30. addChild nach 2 Sekunden
Sie können die aktuelle Zeit messen, bevor die Schleife eintritt, und wieder jedes Mal, wenn Sie laufen die Schleife. Vergleichen Sie den tatsächlichen Wert mit dem, den Sie am Anfang erhalten haben, und wenn der Unterschied größer als 5 Sekunden ist, brechen Sie ab. Dies ist nur eine direkte Antwort auf das, wonach Sie gefragt haben. Die Antwort von @ AlBlue ist jedoch, was Sie unter iOS tun sollten. –
... oder ein anderes System, bei dem das Blockieren des Hauptthreads das Blockieren der grafischen Benutzeroberfläche bedeutet. –
Es gibt nichts wie "weniger Codier". Die wichtigste Metrik ist "korrekt" und "lesbarer". Unendliche Zyklen, die auf diese Weise gemacht werden, sind in erster Linie falsch. Ein Zeitlimit wird sie nicht verbessern. – Sulthan