IOS

Swift---打印变量地址

2017-08-07  本文已影响71人  HPD_黄霹雳

在学习Swift3.0时,看到值类型和引用类型的章节时,我们需要看看某个变量的地址。下面贴出打印地址的方法(这边是验证闭包是值类型还是引用类型)。有两种方法:
方法1:

var a = {
    print("hpd")
}
var b = a
func address(o: UnsafeRawPointer) -> String {
    return String.init(format: "%018p", Int(bitPattern: o))
}
print(address(o: &a))
print(address(o: &b))

输出结果:

"0x00007fff596a3158\n"
"0x00007fff596a3158\n"

方法2:

var a = {
    print("hpd")
}
var b = a
withUnsafePointer(to: &a) {print($0)}
withUnsafePointer(to: &b) {print($0)}

输出结果:

"0x00007fff596a3158\n"
"0x00007fff596a3158\n"

验证闭包是引用类型。

其他的比如枚举,结构体等可以用上面方法打印地址。另外的,对于类实例,我们可以通过===判断两个变量是否属于同一个实例。

class Dog{
    var name:String?
    init(name:String) {
        self.name = name
    }
}

var dog1 = Dog(name: "xiaoming")
var dog2 = dog1
dog1 === dog2

输出结果为:

true
上一篇 下一篇

猜你喜欢

热点阅读