我正在尝试调用包含StaticString参数的Swift函数。
以下是我的尝试:
let method = class_getClassMethod(self, original1)
class ABC {
public static func updateABC(context: Int, str: StaticString) {
}
}
然而,这不起作用,如果我将str的类型更改为String,我们可以正常调整,任何人都有机会使用StaticString类型参数调出一个函数可以帮忙吗?
由于
答案 0 :(得分:1)
StaticString
是一个值类型,因此它没有Objective-C表示。因此,它 - 以及您在其中使用它的声明 - 不会暴露给Objective-C代码或在Objective-C运行时中注册。另一方面,String
与Objective-C兼容(它与NSString
桥接),因此声明与Objective-C兼容。
如果你要调用一个方法,你需要用dynamic
标记它,让编译器知道它应该始终通过Objective-C运行时路由调用,即使在优化的代码中也是如此。使用dynamic
标记函数也会导致编译器在您的函数与Objective-C兼容时发出错误,这可以帮助您诊断问题。