Swift 比较内存地址

idm*_*ean 3 swift

我想比较两个 Swift 对象的地址,例如:

let a: AnyObject
let b: AnyObject

a < b
Run Code Online (Sandbox Code Playgroud)

当然,这是不可能的,但我找不到任何方法来实现这一目标。

我可以只实现一个 C 函数来做到这一点

bool compare(NSObject *a, NSObject *b){
    return a < b;
}
Run Code Online (Sandbox Code Playgroud)

然后称之为

compare(a, b)
Run Code Online (Sandbox Code Playgroud)

但这限制了我使用NSObjects.

所以我的问题是:有什么办法可以完全在 Swift 中实现这一点?

Luc*_*tti 5

您可以使用返回值的unsafeAddressOf函数UnsafePointer

let elm0 = "hello world"
let elm1 = UIButton()

let address0 = unsafeAddressOf(elm0)
let address1 = unsafeAddressOf(elm1)

let compare = address0 > address1
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。