问题描述
我有一个想从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 (将#修改为@)