Swift 获取对象地址

基于Swift3.0

获取地址的用处

  • 最简单的实现对象比较(比如重载 == 来比较对象)

可行方法,代码如下:

let obj = Obj()
/// 方案一: 测试中 发现作用在<引用类型>的对象上能确保正确性
let point = Unmanaged.passUnretained(obj as AnyObject).toOpaque()
let hashValue = point.hashValue // 这个就是唯一的,可以作比较

/// 方案二:测试中 发现作用在<值类型>的对象上能确保正确性
let hashValue2 = withUnsafePointer(to: &obj) { (point) -> Int in
        /// 闭包的实现有多种,可根据自己需求修改 
        return point.hashValue
 }

/// 方案三:以唯一值来对应地址的唯一(比如创建对象时,以时间做标记等)

你可能感兴趣的:(Swift 获取对象地址)