据我所知,在Swift中的反射尚不可用。我目前正在将Objective-C代码转换为swift以提高性能(我注意到了相当大的差异)。使用反射的调用方法
现在我需要的是一种使用反射来调用Method的方法。该方法需要调用的对象扩展为NSObject
以使该类能够使用以下代码进行解析;
let clazz = NSClassFromString("MyProject.DynamicClass") as NSObject.Type;
let clazzInstance = clazz() as! NSObject;
我能够使用下面的代码检索参数的数量和引用方法;
let selectorMethod = Selector("myCustomMethod:");
let numberOfArguments : UInt32 = method_getNumberOfArguments(selectorMethod);
let referenceToMethod : Method = class_getInstanceMethod(clazz, selector!);
但是,如何使用/致电referenceToMethod
?
附加
我也打过电话performSelector但这已完全删除斯威夫特2.我也想避免使用任何@objc
属性/注解。
请问为什么你绝对需要反思?你的用例的一个例子?我相信几乎所有东西都可以在编译时用Swift静态完成,这就是Swift的全部内容 – Kametrixom
我没有一个代码示例atm,但是例如我想从一个可以指定的“框架”中加载一个模块动态地从UI代码中调用,无需程序员知道哪些模块可用,因为可以稍后由其他人添加模块。 – Thys