【发布时间】:2019-06-09 17:54:04
【问题描述】:
虽然here Apple 声明 Swift available 标志也应该在 objc 中应用,但它对我不起作用。我做错了什么?
我在 Swift 文件中有以下声明:
@objc protocol Readable: AnyObject {...}
@available(iOS 10.3, *)
@objc class Reader: NSObject, Readable {...}
所以让我们检查一下当我尝试在没有版本检查的 pre-ios-10 项目中初始化它时它是否会产生错误。如果我在 Swift 中编写以下代码:
let tmp = Reader()
它返回一个错误:
“阅读器”仅适用于 iOS 10.3 或更新版本
预期的结果。
但是,如果我在 objc 中编写以下代码:
// if (@available(iOS 10.3, *)) { // commeted out to test if it succeeds without version check
Reader *tmp = [[Reader alloc] init];
// }
构建完成没有任何错误,而我预计会出现与 Swift 中相同的错误。
我已经尝试用以下方式标记课程:
- @available(iOS 11, *)
- @available(iOS,引入:10.3)
在 objc 中这些都不起作用(产生错误)。请帮忙?
【问题讨论】:
标签: ios objective-c swift language-interoperability