在Objective-C中,这很简单:
[NSString stringWithFormat:@"%p", objRef]
我怎么能在Swift中做到这一点?
ale*_*son 31
func hashString (obj: AnyObject) -> String {
return String(ObjectIdentifier(obj).uintValue)
}
let id = hashString(obj)
Run Code Online (Sandbox Code Playgroud)
Swift 3.0
return String(UInt(ObjectIdentifier(obj))
Run Code Online (Sandbox Code Playgroud)
Swift 4.1
return String(UInt(bitPattern: ObjectIdentifier(obj)))
Run Code Online (Sandbox Code Playgroud)
直接翻译怎么样:
func pointerToString(objRef: NSObject) -> String {
return NSString(format: "%p", objRef)
}
Run Code Online (Sandbox Code Playgroud)
更原生的方式(十进制,不是十六进制):
func pointerToString(objRef: AnyObject) -> String {
return withObjectAtPlusZero(objRef, { ptr in
"\(UnsafePointer<RawByte>(ptr) - nil)"
})
}
Run Code Online (Sandbox Code Playgroud)
func pointerToString(objRef: AnyObject) -> String {
let ptr: COpaquePointer =
Unmanaged<AnyObject>.passUnretained(objRef).toOpaque()
return "\(UnsafePointer<RawByte>(ptr) - nil)"
}
Run Code Online (Sandbox Code Playgroud)
更新:指针现在正确字符串化,所以你可以这样做
func pointerToString(objRef: AnyObject) -> String {
let ptr: COpaquePointer =
Unmanaged<AnyObject>.passUnretained(objRef).toOpaque()
return "\(ptr)"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7657 次 |
| 最近记录: |