ios - 获取函数的地址 [Swift 3.0]

标签 ios swift pointers memory

您可以获得一个地址 AnyObjectunsafeAdressOf(object:AnyObject) -> UnsafePointer<void>函数调用但是我怎样才能得到一个函数的地址呢?例如

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

不工作

最佳答案

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)

关于ios - 获取函数的地址 [Swift 3.0],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38687852/

相关文章:

javascript - 在方向改变期间防止白边

ios - 自定义 UIView 使用 init(coder) 初始化,如何使用 init(frame) 初始化它

ios - 如何将单元格标签的值从 tableView 传递到其他 View?

c++ - "foo(int* pointer)"与 "foo(int* &pointer)"

c - 使用指针数组进行交换

ios - 当 darwin.jam 的 macosx-version-min 设置为我的机器上未安装的 SDK 版本时,Boost Bjam/b2 是否应该失败?

ios - 从一个 View Controller 转换到另一个 View Controller 时, View 方法的调用顺序是什么?

ios - 防止启动图像覆盖状态栏上的时间

ios - 动态调整tableview的高度

c++ - 类方法/函数中的指针