Swift使用inout参数执行选择器

问题描述

我有一个想从swift调用的objc方法,但是该方法存在于运行时可能存在或不存在的第三方框架中。 我想做的是动态调用它,因此我正在考虑使用选择器与之交互。

ObjC中的方法签名看起来像这样

- (NSString * _Nullable)buildData:(NSError * _Nullable __autoreleasing * _Nullable)error;

删除可为空的注释,这是ObjC永远拥有的沼泽标准“归还错误”模式。

- (NSString*)buildData:(NSError*)error;

如果swift可以在编译时加载它,那么它会很高兴地转换为

func buildData() throws -> String

但是,我想动态地调用它。我已经解决了,我可以做到:

let _target:NSObject = // obtain a reference to the underlying value

var error: NSError? = nil
_target.perform(NSSelectorFromString("buildData:"),with: &error)

问题是,我无法将引用传递给执行选择器方法。 XCode给我一个编译错误

“&”与类型为“ Any?”的非inout参数一起使用

所以我的问题是,如何使用选择器调用此方法?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)