基于Swift3.0
获取地址的用处
- 最简单的实现对象比较(比如重载 == 来比较对象)
可行方法,代码如下:
let obj = Obj()
/// 方案一: 测试中 发现作用在<引用类型>的对象上能确保正确性
let point = Unmanaged<AnyObject>.passUnretained(obj as AnyObject).toOpaque()
let hashValue = point.hashValue // 这个就是唯一的,可以作比较
/// 方案二:测试中 发现作用在<值类型>的对象上能确保正确性
let hashValue2 = withUnsafePointer(to: &obj) { (point) -> Int in
/// 闭包的实现有多种,可根据自己需求修改
return point.hashValue
}
/// 方案三:以唯一值来对应地址的唯一(比如创建对象时,以时间做标记等)
网友评论