在學習Swift3.0時讳推,看到值類型和引用類型的章節(jié)時,我們需要看看某個變量的地址躯泰。下面貼出打印地址的方法(這邊是驗證閉包是值類型還是引用類型)栈戳。有兩種方法:
方法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