在运行时进行Swift方法反射

3
我需要在一个特定的目录中发现一堆类和方法(包括参数和返回值),但事先不知道任何名称(类名)(除了目录)。
这个反射必须在运行时完成,但如果不可能,在构建时间完成。
我在Swift中找到了一些基本的反射,用于已知类的属性,但没有关于方法的信息,并且您必须事先知道类:
/// Sample class
class Class {
    var attribute1:String="value1"
    var attribute2:String="value2"
    func method(){
        println("method")
    }
    func method(param:String) -> Bool{
        println("method with params")
        return true
    }
}

/// Attribute reflection
var reflectClass = reflect(Class())

for var i=0; i<reflectClass.count; i++ {
    println("attr name: \(reflect(Class())[i].0)")
    println("attr value: \(reflect(Class())[i].1.summary)")
}

在Swift中是否有可能实现此功能?

提前感谢。


你有找到任何解决纯Swift类中发现实例方法问题的变通方法吗? - tapmonkey
1个回答

0
因为Swift编译器是用C++编写的,并且是开源的,可以在https://github.com/apple/swift上进行修改。这样,您就可以修改Swift编译器,以调用https://github.com/apple/swift/tree/main/stdlib/public/runtime中的功能,从而遍历苹果的任何Swift运行时框架中的所有细节,并以人类可读的形式文本化地输出所需的任何信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接