Swift 2:奇怪Objective C -> Swift方法的签名转换

Swift 2: Strange Objective C -> Swift method's signature conversion

我在 Objective-C 中有一个基础 class,方法如下:

- (BOOL)canFinishWithError:(NSError *__autoreleasing *)error

当我尝试使用 Swift 编译器在子 class 中覆盖它时,编译器强制我在没有 return 值的情况下声明此方法:

override func canFinish() throws{
        // some code
        try super.canFinish()
    }

并且不允许我 return 一些事情。

我怎样才能 return 从这个方法中得到一个值?这是 Swift 2/Xcode 7 测试版问题吗?我应该等待发布吗?

不,这不是错误。

Swift 2 自动识别可以转换为使用的方法签名try

返回 bool 并获取指向 NSError pointer 的指针的方法会自动转换为使用 throw 的签名。

您可以在此 WWDC 演讲中了解更多相关信息:(来自 32:00)https://developer.apple.com/videos/wwdc/2015/?id=106