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
我在 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