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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容