Ich versuche, ein tieferes Verständnis dafür zu bekommen, wie schnell kopiert Werttypen :
Das Verhalten, das Sie in Ihrem Code sehen, wird immer so aussehen, als hätte eine Kopie stattgefunden Ort. Swift führt jedoch hinter den Kulissen nur eine Kopie aus wenn es unbedingt notwendig ist.
Um mein Verständnis zu verbessern, möchte ich die Speicheradresse eines Werttyps erhalten. Ich habe versucht unsafeAddressOf (), aber dies funktioniert nicht mit Strukturen und es scheint zu Swift-Standard-Bibliothek Typen Referenztypen (zB String wird in NSString umgewandelt).
Wie kann ich die Speicheradresse eines Werttyps wie eine Instanz von Int oder eine benutzerdefinierte Struktur in Swift abrufen?
Laut Martin Rs Antwort
addressOf () kann nicht mit Strukturvariablen verwendet werden. String ist eine Struktur, wird jedoch automatisch an NSString überbrückt, wenn sie an eine Funktion übergeben wird, die ein Objekt erwartet.
Nach der Antwort von nschum können Sie die (Stack-) Adresse eines struct , eines eingebauten Typs oder eines Objektverweises wie folgt erhalten:
%Vor% Eine Sache, die ich fand, ist, wenn myStruct
keinen Wert hat, wird die Adresse gleich behalten: