Ich verstehe, dass in Swift alle Variablen mit einem Wert gesetzt werden müssen und dass wir mithilfe von Optionen eine Variable setzen können, auf die nil
anfänglich gesetzt werden soll.
Was ich nicht verstehe ist, was das Setzen einer Variablen mit a !
bewirkt, weil ich den Eindruck hatte, dass dies einen Wert von einem optionalen "entpackt". Ich dachte, auf diese Weise garantieren Sie, dass in dieser Variablen ein Wert zum Entpacken vorhanden ist, weshalb Sie ihn bei IBActions und solchen verwenden.
Einfach ausgedrückt, auf welche Variable wird initialisiert, wenn Sie so etwas tun:
var aShape : CAShapeLayer!
Und warum / wann sollte ich das tun?
Antworten:
In einer Typdeklaration
!
ähnelt das dem?
. Beide sind optional, aber das!
ist " implizit entpackt" optional , was bedeutet, dass Sie es nicht entpacken müssen, um auf den Wert zuzugreifen (aber es kann immer noch null sein).Dies ist im Grunde das Verhalten, das wir bereits in Ziel-c hatten. Ein Wert kann Null sein, und Sie müssen danach suchen, aber Sie können auch direkt auf den Wert zugreifen, als wäre er nicht optional (mit dem wichtigen Unterschied, dass Sie einen Wert erhalten, wenn Sie nicht nach Null suchen Laufzeit Fehler)
Verwendung:
quelle
nil
Wert zugreifen und tatsächlich damit "arbeiten". Wenn man schnell auf ein implizit entpacktes optionales Element zugreift, während es gleich Null ist, wird eine Laufzeitausnahme ausgelöst.