1
私はスウィフトのメモリ管理に関して少し混乱しています。誰かがいつ私は同じようなメモリアドレスに常にkid1来る説明することができますか?私がkid1 = kid2や新しいオブジェクトを初期化しても?スウィフトのメモリ管理
私はスウィフトのメモリ管理に関して少し混乱しています。誰かがいつ私は同じようなメモリアドレスに常にkid1来る説明することができますか?私がkid1 = kid2や新しいオブジェクトを初期化しても?スウィフトのメモリ管理
あなたのコードは、kid1
変数のメモリ位置を印刷し し、変数に新しい値を割り当てる場合には変更されません。
Kid
が参照型(クラス)であるなら、あなたは変数の参照こと クラスインスタンスの一意の識別子を取得するために ObjectIdentifier
を使用することができます。
var kid1 = Kid(name: "A")
var kid2 = Kid(name: "B")
print(ObjectIdentifier(kid1)) // ObjectIdentifier(0x0000000100b06220)
print(ObjectIdentifier(kid2)) // ObjectIdentifier(0x0000000100b06250)
kid1 = kid2
print(ObjectIdentifier(kid1)) // ObjectIdentifier(0x0000000100b06250)
オブジェクト識別子があることを起こりますアドレスは インスタンスですが、これは文書化されていない実装の詳細です。 あなたは本当のポインタ にオブジェクト参照を変換する必要がある場合は、あなたが行うことができます(How to cast self to UnsafeMutablePointer<Void> type in swiftを比較)
print(Unmanaged.passUnretained(kid1).toOpaque())
偉大な答え - ありがとう – YogevSitton