In Swift 1.2 gibt es ein neues Attribut mit Schließparametern in Funktionen, und wie in der Dokumentation angegeben:
Dies zeigt an, dass der Parameter immer nur aufgerufen wird (oder in einem Aufruf als @ noescape-Parameter übergeben wird), was bedeutet, dass er die Lebensdauer des Aufrufs nicht überleben kann.
Nach meinem Verständnis könnten wir vorher verwenden, [weak self]
um nicht zuzulassen, dass der Abschluss einen starken Bezug zu z. B. seiner Klasse hat, und self könnte null oder der Fall sein, in dem der Abschluss ausgeführt wird, aber jetzt @noescape
bedeutet dies, dass der Abschluss niemals ausgeführt wird wenn die Klasse deinitalisiert ist. Verstehe ich es richtig
Und wenn ich richtig @noescape
liege , warum sollte ich dann einen Verschluss verwenden, der eine reguläre Funktion enthält, wenn sie sich sehr ähnlich verhalten?
@noescape
garantiert, dass der Verschluss nicht ... asynchron verwendet wird". Das heißt, Sie können es nicht mit Netzwerkcode verwenden, der asynchron ausgelöst wird.