しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

Swiftで変数のメモリの番地を取得する

unsafeAddressOfという大域関数で取得できるようです。

普通に取得できました。

let obj = NSObject()
print(unsafeAddressOf(obj)) // → 0x00007ff9c51054f0

代入した場合は同じ番地なので同じ値になります。

let obj = NSObject()
let obj2 = obj
print(unsafeAddressOf(obj)) // → 0x00007fc2e042b6d0
print(unsafeAddressOf(obj2)) // → 0x00007fc2e042b6d0

構造体も同様です。

let str = ""
print(unsafeAddressOf(str)) // → 0x00007fc2e1246e70

unsafeAddressOfは引数がAnyObjectなのでOptionalや関数を引数にする事はできませんでした。

public func unsafeAddressOf(object: AnyObject) -> UnsafePointer<Void>

参考URL

ktyr report [コトヨリリポート] - [Swift]メモリアドレス取得