Swift 的反射 - 获取类的函数名称

Mat*_*oal 4 swift

我想知道是否有办法获得一些有用的班级构成信息。例如,我发现能够访问类的所有可用函数非常有用。看来这MyrrorType不是我正在寻找的:/我知道我可以使用获取函数名称__FUNCTION__,但这并不完全是我所需要的。我需要的是可用于班级的所有功能的完整列表。有什么有用的提示吗?

Cod*_*ent 5

与 Objective-C 中可用的黑客技术相比,Swift 中的反射非常有限。话虽如此,Objective-C 运行时函数在 Swift 中仍然可用。您可以通过让您的类继承自以下内容,将您的类潜入 Objective-C 世界NSObject

class MyClass: NSObject {
    func f1() {}
    func f2() {}
    func f3() {}
}

let myClass = MyClass.self

var methodCount: UInt32 = 0
let methodList = class_copyMethodList(myClass, &methodCount)

for i in 0..<Int(methodCount) {
    let selName = sel_getName(method_getName(methodList[i]))
    let methodName = String(CString: selName, encoding: NSUTF8StringEncoding)!
    print(methodName)
}
Run Code Online (Sandbox Code Playgroud)

这将为您提供 4 种方法:f1 ... f3init