Unterschied zwischen Completion Handler und Blocks: [iOS]

9

Ich bin sowohl mit dem Beendigungshandler als auch mit den Blöcken verwirrt, während ich sie in swift und objective-c verwende. Und wenn ich Blöcke in swift auf Google suche, zeigt es Ergebnis für Vollendungshandler! Kann mir jemand sagen, was ist der Unterschied zwischen Completion-Handler und Blöcke in Bezug auf schnelle und objektive c?

    
shubham mishra 21.09.2016, 07:11
quelle

3 Antworten

17

Hier können Sie leicht zwischen Blöcken und Completion-Handlern unterscheiden, beide sind Blöcke, siehe unten.

Blöcke:

Blocks sind eine Funktion auf Sprachenebene, die zu C, Objective-C und C ++ hinzugefügt wird und mit der Sie verschiedene Codeabschnitte erstellen können, die an Methoden oder Funktionen weitergegeben werden können, als wären sie Werte. Blöcke sind Objective-C-Objekte, was bedeutet, dass sie Sammlungen wie NSArray oder NSDictionary hinzugefügt werden können.

  • Sie können zu einem späteren Zeitpunkt ausgeführt werden, und nicht wenn der Code des der Umfang, in dem sie implementiert wurden, wird ausgeführt.
  • Ihre Verwendung führt schließlich zu einem viel saubereren und aufgeräumteren Code Schreiben, wie sie anstelle von Delegiertenmethoden verwendet werden können, geschrieben nur an einem Ort und nicht auf viele Dateien verteilt.

Syntax: ReturnType (^ blockName) (Parameter) siehe Beispiel :

%Vor%

Block mit Argument:

%Vor%

Beendigungshandler:

Der Completion-Handler ist eine Möglichkeit (Technik), um die Callback-Funktionalität mithilfe von Blöcken zu implementieren.

Ein Beendigungshandler ist nicht mehr als eine einfache Blockdeklaration, die als Parameter an eine Methode übergeben wird, die zu einem späteren Zeitpunkt einen Rückruf durchführen muss.

Hinweis: Der -Komplettierungshandler sollte immer der letzte Parameter in einer Methode sein. Eine Methode kann so viele Argumente haben, wie Sie möchten, aber immer den Abschlusshandler als letztes Argument in der Parameterliste haben.

Beispiel:

%Vor%

Mehr Beispiele mit UIKit Klassen Methoden.

%Vor% %Vor%     
vaibhav 21.09.2016 08:28
quelle
5

Kurz gesagt: Completion-Handler sind eine Möglichkeit, Callback-Funktionen mithilfe von Blöcken oder Schließungen zu implementieren. Blöcke und Closures sind Codestücke, die an Methoden oder Funktionen weitergegeben werden können, als wären sie Werte (mit anderen Worten "anonyme Funktionen", denen wir Namen geben und weitergeben können).

    
Axel Guilmin 21.09.2016 07:13
quelle
4

Blöcke : Obj-c

%Vor%

Closures : Swift

%Vor%

Die Abschlussverknüpfung hier ist zum Beispiel nur eine Funktion, die Argument-Strings akzeptiert und void zurückgibt.

  

Closures sind eigenständige Funktionsblöcke, die übergeben werden können   herum und in Ihrem Code verwendet. Verschlüsse in Swift sind Blöcken ähnlich   in C und Objective-C und Lambdas in anderen Programmiersprachen.

Ссылка

  

Verschlüsse   sind erstklassige Objekte, so dass sie verschachtelt und weitergegeben werden können   (wie Blöcke in Objective-C). In Swift sind Funktionen nur etwas Besonderes   Fall von Verschlüssen.

    
pedrouan 21.09.2016 07:22
quelle