nullable und ungleich NULL wurde eingeführt Objective C und Swift Interoperabilität zu erleichtern.
Ziel C macht keinen Unterschied zwischen optionalen und nicht optionalen Referenzen. Dann kann der Swift-Compiler nicht sicher sein, ob ein bestimmter Verweis auf Objective C-Code optional ist oder nicht.
NULL-Annotation ist die gleiche wie optional in Swift. nonnull-Annotation ist in Swift das gleiche wie nicht-optional.
Die Daumenregel ist jeder einfacher Zeigertyp (für weitere Informationen lesen the official Swift blog)
ich auch, dass diese neue Annotation Codequalität verbessern wird auch von Objective C Sicht sagen würde seine ungleich null angenommen wird. Ich frage mich normalerweise, ob die App abstürzen würde, wenn ein pass nil als Parameter? Zum Beispiel:
id var;
NSMutableArray *a = [NSMutableArray new];
[a addObject:var];
Compiler sagt nichts in diesem Fall und Ihre Anwendung in der Ausführungszeit zum Absturz! Jetzt mit dieser neuen Anmerkung werden Sie eine Warnung in der Kompilierungszeit sehen. Ich weiß, dass dieses Beispiel dumm ist, aber es gibt einige Fälle, in denen Sie nicht wissen, ob Sie überprüfen müssen, ob eine Eigenschaft null ist oder nicht, bevor Sie eine Methode aufrufen, es sei denn, Sie lesen die Dokumentation.
Sie meinen "wird nie * absichtlich * nil sein". –
Es kann sein, nil, aber dann ist Ihre App in DS sowieso, und jenseits der Hoffnung. Ich frage mich, ob jemand versucht hat, was passiert, wenn Sie einer Swift-Objektreferenz Null zuweisen. – gnasher729
@ gnasher729 - Basierend auf den Fragen, die ich hier sehe, versuchen Leute das ziemlich oft. –