Reflection Swift发现协议方法

Reflection Swift发现协议方法,reflection,methods,swift,protocols,Reflection,Methods,Swift,Protocols,我正在开发一个HTML5 showcase应用程序,我需要发现Swift协议中的所有方法。所有协议都是从基本协议扩展而来的 该应用程序是测试这种方法的HTML5展示。应用程序调用该方法并给出响应 我找到了关于一个特定协议的一些信息,但我需要在我的应用程序中找到所有协议,然后找到关于这个方法的所有信息(名称、参数名称、参数类型和返回值) @objc protocol Protocol { func method1() func method2() -> Bool

我正在开发一个HTML5 showcase应用程序,我需要发现Swift协议中的所有方法。所有协议都是从基本协议扩展而来的

该应用程序是测试这种方法的HTML5展示。应用程序调用该方法并给出响应

我找到了关于一个特定协议的一些信息,但我需要在我的应用程序中找到所有协议,然后找到关于这个方法的所有信息(名称、参数名称、参数类型和返回值)

@objc protocol Protocol {    
    func method1()
    func method2() -> Bool
    func method3(param1:Int) -> Bool
    func method4(param1:Int, param2:Int, param3:Int) -> Bool
}

var numMethods:UInt32 = 0
var methods:UnsafeMutablePointer<objc_method_description> = protocol_copyMethodDescriptionList(Protocol.self, true, true, &numMethods)

for var iuint:CUnsignedInt = 0; iuint < numMethods; iuint++ {

    var i:Int = Int(iuint)
    var method:objc_method_description = methods[i]    
    println("Method #\(i): \(method.name)")
}
@objc协议{
func方法1()
func method2()->Bool
func method3(参数1:Int)->Bool
func方法4(param1:Int,param2:Int,param3:Int)->Bool
}
变量数值方法:UInt32=0
var方法:unsafemeutablepointer=protocol\u copyMethodDescriptionList(protocol.self、true、true和numMethods)
对于变量iuint:CUnsignedInt=0;iuint
我正在使用Objective-C运行时引用


你知道如何在swift中实现这一点吗?

在swift中没有真正的反映

欲了解更多信息,请阅读:


  • 您将希望获得:

  • 方法实现(方法\u getImplementation
  • 和方法选择器(method\u getName
  • 然后在objective-c中(当然,使用桥接文件),将方法实现(即IMP)转换为函数指针。然后使用

  • 目标
  • 选择器
  • 以及您可能拥有的任何参数

    id (*func)(id, SEL, id) = (void *)imp;
    return func(target, selector, param);`
    
  • 看看他在这篇博文中是如何调用init方法的,这也会有所帮助。

    感谢您提供的文档。我以前读过所有这些帖子。但在这篇文章中,我说可以使用Objective-C运行时引用查询方法,这正是我要做的。我想问的是,是否有人有一个完整的例子来获取一个方法的所有信息。