在Javascript中使用Swift的self来访问Swift类的变量和函数

时间:2017-01-10 17:00:27

标签: javascript ios swift

我有一个项目,我从Swift类中调用JS方法function jsMethod(selfRef)。让我们假设,我们有一个class A从中调用此方法。 selfRefself的引用,即从class A selfRef发出来的时候会引用self的{​​{1}}

如何使用此class A访问变量或调用selfRef

中的方法

1 个答案:

答案 0 :(得分:1)

您只能向JS发送那些从NSObject派生的对象。如果你的A类没有从NSObject继承,那么它将无法正常工作。您可以尝试以下方法之一:

  1. 将类转换为struct :您可以传递任何基本类型,因此支持struct。
  2. 继承自NSObject :让您的类A继承自NSObject。虽然你可能会失去swift的“迅捷”,但这对大多数应用程序来说都无关紧要。 (由于某种原因,swift类不会从NSObject继承,但这是对不同问题的讨论。)
  3. 包装对象:为Swift类编写一个适配器(或者简单来说 - 一个包装器)并将适配器发送给JS。适配器应该继承NSObject。这将使Swift的特性和性能保持在swift代码中,因为更改只会在与JS交互的层中。 JS将通过适配器中的相应函数调用原始对象上的方法。不要试图从JS中的包装器中提取原始对象,因为它会导致崩溃。