Lassen Sie session
ein konfiguriertes NSURLSession
Objekt sein. Ein typischer Code eine Aufgabe für diese Sitzung in Swift wäre,Was bedeutet "NSURLSession API ist hoch asynchron"?
let task = session.dataTaskWithRequest(request, completionHandler: { (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
//my custom completion handler invocation
})
Mein Zweifel ist, ist meine Gewohnheit Abschluss-Handler in einem dispatch_async
Aufruf zu erstellen aufgerufen werden, um den UI-Thread nicht blockiert? Oder es muss nicht erforderlich sein, da die API inhärent asynchron ist, würde die Methode dataTaskWithRequest(_:completionHandler)
kümmern?
Auch in der documentation hat die Methode keinen Abschluss-Handler-Block, wie Sie sehen können. Aber ich habe viele Tutorials mit dieser Methode gesehen !?
Die 'NSURLSession'-API verfügt sowohl über die Option, Vervollständigungshandler (Blöcke/Verschlüsse) als auch Delegate-Methoden zu verwenden. Ich denke, die Optionen der Delegiertenmethode geben Ihnen eine feinere Kontrolle, aber es gibt insgesamt vier Protokolle und viele Methoden (am meisten optional), die übernommen werden können. –
Der von Ihnen angegebene Link dokumentiert beide Methoden ' dataTaskWithURL (_ :)' und ' ' dataTaskWithURL (_: completionHandler:) '. Erstere erwähnt die Notwendigkeit eines Delegierten. –
https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSession_class/index.html#//apple_ref/occ/instm/NSURLSession/dataTaskWithRequest:completionHandler: – Wain