美文网首页
Swift 获取对象地址

Swift 获取对象地址

作者: craig_wang | 来源:发表于2017-10-11 11:07 被阅读48次

    基于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
     }
    
    /// 方案三:以唯一值来对应地址的唯一(比如创建对象时,以时间做标记等)
    

    相关文章

      网友评论

          本文标题:Swift 获取对象地址

          本文链接:https://www.haomeiwen.com/subject/rmniyxtx.html