Swift 获取对象地址

基于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
 }

/// 方案三:以唯一值来对应地址的唯一(比如创建对象时,以时间做标记等)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,603评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,943评论 18 399
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 12,136评论 6 13
  • 第七 午夜空袭 上 乌尔撒停住中军,五百亲兵高举火把将他围在中间。他深知秦璋之勇,绝不肯轻易冲在前列。 北沙拓骑兵...
    北玄武阅读 541评论 0 1
  • 你记忆里有没有这样一个少年?他清秀不浮夸,安静不张扬,温柔不冷漠,永远都是一副低眉浅笑的样子,看起来人畜无害,极好...
    宿茵阅读 336评论 0 2

友情链接更多精彩内容