【发布时间】:2015-10-08 13:56:03
【问题描述】:
我正在尝试获取现有 Objective C 类的方法的结果,该方法使用 performSelector
调用let result = controlDelegate.performSelector("methodThatReturnsBOOL") as? Bool
我需要将此结果转换为 Swift 的 Bool 类型。
上面提到的代码,给出了一个警告
“从'Unmanaged!'到不相关的类型 'Bool' 总是失败”
结果总是“假”,即使方法返回 YES。
将结果转换为 Bool 有什么建议吗?
methodThatReturnsBOOL 的签名
- (BOOL)methodThatReturnsBOOL
{
return YES;
}
【问题讨论】:
-
可以发
methodThatReturnsBOOL的签名吗? -
您不能将 performSelector() 与返回 BOOL 的方法一起使用。从文档中:“对于返回对象以外的任何方法,请使用 NSInvocation。” 但是 NSInvocation 在 Swift 中不可用(据我所知)。
-
@Alladinian : 问题已更新(它只是一个简单的 Objective C 方法,返回 YES/NO)
-
@MartinR :是的,我查看了 NSInvocation 并且它在 Swift 中不可用(还)。虽然 performSelector() 工作正常,但这只是如何捕获返回的 BOOL 值的问题。关于如何实现这一目标的任何其他建议?
-
我们在现有的 Objective C 类中有一个 id 类型的委托。我们需要通过一个 Swift 类在这个委托上
performSelector,而后者又是现有 Objective C 类的子类。