在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
}
}
网友评论