使用StaticString在Swift中晃荡

时间:2015-11-17 00:20:11

标签: ios swift method-swizzling

我正在尝试调用包含StaticString参数的Swift函数。

以下是我的尝试:

let method = class_getClassMethod(self, original1)

class ABC {
  public static func updateABC(context: Int, str: StaticString) {
  }
}

然而,这不起作用,如果我将str的类型更改为String,我们可以正常调整,任何人都有机会使用StaticString类型参数调出一个函数可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:1)

StaticString是一个值类型,因此它没有Objective-C表示。因此,它 - 以及您在其中使用它的声明 - 不会暴露给Objective-C代码或在Objective-C运行时中注册。另一方面,String与Objective-C兼容(它与NSString桥接),因此声明与Objective-C兼容。

如果你要调用一个方法,你需要用dynamic标记它,让编译器知道它应该始终通过Objective-C运行时路由调用,即使在优化的代码中也是如此。使用dynamic标记函数也会导致编译器在您的函数与Objective-C兼容时发出错误,这可以帮助您诊断问题。