class X {
@objc func sayHiTo(name: String) {
print("Hello \(name)!")
}
}
let obj = X()
let sel = #selector(obj.sayHiTo)
let method = class_getInstanceMethod(object_getClass(obj), sel)
let imp = method_getImplementation(method)
typealias ClosureType = @convention(c) (AnyObject, Selector, String) -> Void
let sayHiTo : ClosureType = unsafeBitCast(imp, ClosureType.self)
sayHiTo(obj, sel, "May")