Swift, Strings und Speicheradressen

Es gibt etwas, was ich nicht verstehe, wie Swift die Speicheradresse von @ verwaltString(s)

1. Referenztypen

Hierfoo undboo sind 2 Zeiger auf das gleicher Speicherort.

class Foo { }

let foo = Foo()
let boo = foo

unsafeAddressOf(foo) // "UnsafePointer(0x7FCD13719BE0)"
unsafeAddressOf(boo) // "UnsafePointer(0x7FCD13719BE0)" 

Gut

2. Werttypen
let word0 = "hello"
let word1 = word0

Jetztword0 undword1 sindvalue types aber hier dascopy on write Mechanismus ist beteiligt.

[...] Swift führt jedoch nur dann eine tatsächliche Kopie hinter den Kulissen durch, wenn dies unbedingt erforderlich ist. Swift verwaltet das Kopieren aller Werte, um eine optimale Leistung zu gewährleisten. Sie sollten die Zuweisung nicht vermeiden, um diese Optimierung zu verhindern.https: //developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ClassesAndStructures.html#//apple_ref/doc/uid/TP40014097-CH13-XID_13

Warum haben sie 2 verschiedene Speicheradressen?

unsafeAddressOf(word0) // "UnsafePointer(0x7FCD1342ACE0)"
unsafeAddressOf(word1) // "UnsafePointer(0x7FCD13414260)"
3. Meh

itte beachten Sie auch, dassString ist einstruct Das irgendwie entspricht zuAnyObject.

Getestet mit Xcode 7 GM Playground und Swift 2.0.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage