简体   繁体   English

获取函数的地址 [Swift 3.0]

[英]Get the address of a function [Swift 3.0]

You can get an address of AnyObject with unsafeAdressOf(object:AnyObject) -> UnsafePointer<void> function call but how can I get an address of a function?你可以得到的地址AnyObjectunsafeAdressOf(object:AnyObject) -> UnsafePointer<void>函数调用,但我怎样才能得到一个函数的地址? for example例如

func foo(){print("hi")}
print(unsafeAdressOf(foo))

does not work不起作用

class Foo {
    func poo(value: Int) {
        print(value)
    }
}
typealias classFunctionType = @convention(thin) (Foo)->(Int)->()

func getSwiftFunctionAddr(_ function: @escaping classFunctionType) -> UnsafeMutableRawPointer {
    return unsafeBitCast(function, to: UnsafeMutableRawPointer.self)
}

let func_addr = getSwiftFunctionAddr(Foo.poo)

print(func_addr)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM