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

2019-07-13  本文已影响0人  齐舞647

在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
        }
    }
上一篇下一篇

猜你喜欢

热点阅读