在Swift中获取函数的返回类型

时间:2015-06-27 02:00:33

标签: swift reflection xcode6.3 ios8.3

我意识到在Swift中还没有完全支持反射,但是(显然)支持反射运行时方法。我试图在运行时获取函数的返回类型。这是我的例子

let s:Selector = "willAnimateRotation"
var m:Method = class_getInstanceMethod(object_getClass(self),  s)
let returnType = method_copyReturnType(m)
println("method: \(m); returnType: \(returnType)")
free(returnType)

这是我的willAnimateRotation方法的一个示例,当前返回String:

private func willAnimateRotation() -> String {
    return "abc"
}

根据选择器的返回类型,输出似乎没有变化。例如,对于选择器的String或Void返回类型,我得到以下输出:

  

方法:0x0000000000000000; returnType:0x0000000000000000

思想?

另外:我实际上并没有真正尝试在Swift中这样做。我将Objective-C类桥接到Swift,当Objective-C代码尝试确定Swift选择器的返回类型时,我得到相同的结果。也就是说,我在这种情况下的最终目标恰好是使用Objective-C来获取Swift选择器的返回类型。

2 个答案:

答案 0 :(得分:0)

行。我已经弄明白了。问题出在我使用"私人"关键词。如果你删除它,只需使用:

configure

上面的示例代码工作正常。

答案 1 :(得分:-1)

在Swift中,您可以使用返回箭头指示函数的返回类型 - > (连字符后跟右尖括号),后面跟着要返回的类型的名称。