美文网首页
Swift小记:对比两个对象的地址是否相同

Swift小记:对比两个对象的地址是否相同

作者: 齐舞647 | 来源:发表于2019-07-13 20:32 被阅读0次

在Objective-C中,我们都知道
==代表 比较两个对象的地址是否一样(引用对比)
isEqual代表 比较两个对象的值是否一样(数值对比)

而在Swift中,并不是这样。
在Swift中,==表示 数值对比,而地址的对比需要我们自己实现。

    // 取出某个对象的地址
    func sg_getAnyObjectMemoryAddress(object: AnyObject) -> String {
        let str = Unmanaged<AnyObject>.passUnretained(object).toOpaque()
        return String(describing: str)
    }
    
    // 对比两个对象的地址是否相同
    func sg_equateableAnyObject(object1: AnyObject, object2: AnyObject) -> Bool {
        let str1 = sg_getAnyObjectMemoryAddress(object: object1)
        let str2 = sg_getAnyObjectMemoryAddress(object: object2)
        
        if str1 == str2 {
            return true
        } else {
            return false
        }
    }

相关文章

  • Swift小记:对比两个对象的地址是否相同

    在Objective-C中,我们都知道==代表 比较两个对象的地址是否一样(引用对比)而isEqual代表 比较两...

  • 14.同一运算符

    is/is not 比较两个变量引用对象是否相同,即id/内存地址是否相同 == 比较两个变量引用对象的值是否相同...

  • Java中的== 和equals 以及 kotlin中的==和=

    Java == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同...

  • ===和==

    ==只比较内容是否相同;===还比较地址是否相同; //在swift中采用”==“对两个变量进行比较时,只要内容相...

  • Python 基础 | 深入理解is和==的区别

    is和==的区别 is是比较两个对象在内存中地址是否相同 ==是比较两个对象的值是否相同,它调用的是对象的eq方法...

  • ==与equals与hashcode

    == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,说即是否是指相同一个对象...

  • equals和==的区别小结

    == == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个...

  • ==和equals

    == == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个...

  • equals和==的区别小结

    == ==比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对...

  • equals

    equals 比较的是两个引用数据类型对象的地址是否相同

网友评论

      本文标题:Swift小记:对比两个对象的地址是否相同

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