【发布时间】:2015-09-23 17:29:15
【问题描述】:
我的 Objective-c 库中有两个方法,在转换为 Swift 后,它们似乎具有相同的方法签名。它们在 Objective-C 中如下所示:
- (void)doSomething:(UIViewController *)viewController __attribute__((deprecated));
- (BOOL)doSomething:(UIViewController *)viewController error:(NSError **)error;
根据我所读到的关于在 Objective-C 中使用 NSErrors + BOOL 返回值的方法的 Swift 转换,这些方法最终将具有以下 Swift 方法签名:
func doSomething(viewController: UIViewController)
func doSomething(viewController: UIViewController) throws
由于第一个调用在 Objective-C 中实际上已被弃用,有没有办法强制对该方法的调用使用第二个签名(确保我可以利用抛出的错误)?
我正在尝试通过以下方式调用该方法:
do {
try myObjectInstance.doSomething(self)
} catch let error as NSError {
print(error)
}
这种方法似乎默认为第一个声明,这给了我一个警告:a)该方法已被弃用,b)没有什么可捕获的,因为没有抛出错误。
【问题讨论】:
标签: ios objective-c swift swift2