一种在Swift中动态调用方法的方法

一种在Swift中动态调用方法的方法,swift,methods,dynamic,Swift,Methods,Dynamic,在JavaScript中,您可以动态调用如下方法: class Foo { myMethod() { console.log('myMethod') } } var foo = new Foo() var method = 'myMethod' foo[method]() 您可以将该方法编写为字符串并动态调用它。您也可以这样做: foo[method].apply(someScope, [ argA, argB, ... ]) 不知道您是否可以在Swift中执行类似的操作,

在JavaScript中,您可以动态调用如下方法:

class Foo {
  myMethod() {
    console.log('myMethod')
  }
}

var foo = new Foo()
var method = 'myMethod'
foo[method]()
您可以将该方法编写为字符串并动态调用它。您也可以这样做:

foo[method].apply(someScope, [ argA, argB, ... ])
不知道您是否可以在Swift中执行类似的操作,我是Swift新手。

您可以使用模式来解决此问题,不过@David Pasztor评论说


当您试图在强类型编译语言中动态调用方法时,很可能在解决问题时走错了方向。对斯威夫特来说尤其如此。解释您试图解决的问题,您认为需要动态地处理所有方法,而不是尝试将JS代码逐行转换为Swift

尽管KVO可以用来解决这些问题,但我建议您阅读它,它允许您动态观察键,并在此基础上执行操作


请记住,KVO是使用
Ojbc
编译器编译的

当您试图在强类型编译语言中动态调用方法时,很可能在解决问题时走错了方向。对斯威夫特来说尤其如此。解释您试图解决的问题,您认为需要动态地使用所有方法,而不是尝试将JS代码逐行转换为Swift。好吧,如果您可以将自己限制为在
ObjC
(并桥接到
Swift
)中创建的代码(类),您就可以这样做。这不是KVO的目的吗?实际上,这里不需要
KVO
,我的意思是
b服务部分
。KVO与动态调用方法有什么关系?KVO可用于在观察到的变量/属性的值发生更改时执行方法,但这些方法仍然需要强类型。KVO与OP的问题完全无关。如果他观察到一些值,它可以用来执行强类型函数,这只是另一种解决方案。从他的案例来看,他可能试图在运行时根据操作执行函数,因此观察键可能有助于他实现这一点,我并不是说这是对他的问题的最终答案,这可能会对他有所帮助并对他有用@DávidPászor请注意一些关于这个话题我能学到的东西