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?
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.
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.
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).
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.
Tags und Links objective-c ios swift block completionhandler