Swift学习

Swift如何打印一个对象的地址

2016-01-21  本文已影响3929人  子达如何
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

上一篇下一篇

猜你喜欢

热点阅读