Хотя здесь Apple заявляет, что следует применять флаг Swift available
также в objc, у меня это не работает. Что я делаю не так?
У меня есть следующие объявления в файлах Swift:
@objc protocol Readable: AnyObject {...}
@available(iOS 10.3, *)
@objc class Reader: NSObject, Readable {...}
Итак, давайте проверим, выдает ли он ошибку, когда я пытаюсь инициализировать его в проекте до 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.
Я попытался отметить класс с помощью:
- @доступно(iOS 11, *)
- @доступно(iOS, введено: 10.3)
Ни один из этих способов не работает (выдает ошибку) в objc. Любая помощь, пожалуйста?