Ich lerne gerade über Rückrufe in Swift und versuche, etwas sehr grundlegendes zu verstehen. Ich kann nirgendwo eine klare Antwort finden.Sind Funktionen, die automatisch geschlossen werden, asynchron?
Ich verstehe, dass, wenn ich tue:
URLSession.dataTask(with: URLRequest) { data, response, error in }
es wird eine asynchrone Netzwerkanfrage durchführt, nach dem ich meine eigenen Arbeit mit dem Ergebnis, in den Abschluss-Handler zu tun.
Lassen Sie uns jedoch sagen, dass ich meine eigene Funktion schreiben möchte, die eine Art Hintergrundaufgabe ausführt. Wäre es einfach genug, eine Schließung als Parameter für die Funktion (die im Funktionskörper aufgerufen wird) zu haben, damit die Funktion asynchron arbeitet? Oder müsste ich GCD-Methode (n) auch im Funktionskörper aufrufen?
Ja, Sie müssen sicherstellen, dass es sich um einen anderen Thread handelt; http://stackoverflow.com/questions/24056205/how-to-use-background-thread-in-swift. Wenn Sie eine Funktion von einem Parameter aufrufen, wird sie nicht asynchron. http://stackoverflow.com/questions/748175/asynchronous-vs-synchronous-execution-what-does-it-really-mean –
, um Ihren Code im Hintergrund arbeiten müssen Sie GCD verwenden. .dataTask senden eine asynchrone Anfrage standardmäßig –