import Foundation
func address<T: AnyObject>(o: T) -> String {
return String.init(format: "%018p", unsafeBitCast(o, Int.self))
}
参数泛型AnyObject可以改成Any,这样就可以打印struct,enum等类型的变量。
对于Int,等类型,上面的方法不生效,它会打印出值本身,比如var a = 10;
会打印10。
需要再加一个这样的函数:
func address(o: UnsafePointer<Void>) -> String {
return String.init(format: "%018p", unsafeBitCast(o, Int.self))
}
传参的时候也要取地址
address(&a)
Swift1.2之后针对AnyObject类型,有一个unsafeAddressOf
函数。
更新一个知识点:lldb查看swift对象内存结构的方法
fr v -R foo