import Foundation
func address<T: AnyObject>(o: T) -> String {
return String.init(format: "%018p", unsafeBitCast(o, Int.self))
}
參數(shù)泛型AnyObject可以改成Any网持,這樣就可以打印struct宜岛,enum等類型的變量。
對于Int功舀,等類型萍倡,上面的方法不生效,它會(huì)打印出值本身辟汰,比如var a = 10;
會(huì)打印10列敲。
需要再加一個(gè)這樣的函數(shù):
func address(o: UnsafePointer<Void>) -> String {
return String.init(format: "%018p", unsafeBitCast(o, Int.self))
}
傳參的時(shí)候也要取地址
address(&a)
Swift1.2之后針對AnyObject類型阱佛,有一個(gè)unsafeAddressOf
函數(shù)。
更新一個(gè)知識(shí)點(diǎn):lldb查看swift對象內(nèi)存結(jié)構(gòu)的方法
fr v -R foo