Если у меня есть приложение, созданное с использованием SwiftUI, будет ли оно работать на iOS ниже iOS 13?
Если у меня есть приложение, созданное с использованием SwiftUI, будет ли оно работать на iOS ниже iOS 13?
Ответы:
Я только что проверил его в Xcode 11 и могу подтвердить, что он не будет обратно совместим, как это видно в View
реализации SwiftUI :
/// A piece of user interface.
///
/// You create custom views by declaring types that conform to the `View`
/// protocol. Implement the required `body` property to provide the content
/// and behavior for your custom view.
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
public protocol View : _View {
/// The type of view representing the body of this view.
///
/// When you create a custom view, Swift infers this type from your
/// implementation of the required `body` property.
associatedtype Body : View
/// Declares the content and behavior of this view.
var body: Self.Body { get }
}
Я так не думаю, потому что все библиотеки уже аннотированы для iOS 13 и выше.
Также в документации Apple четко упоминает поддерживаемые версии:
SwiftUI и Combine используют Opaque-Return-Types в Swift 5.1, а поскольку Opaque-Return-Types (наряду с другими функциями) реализованы в Swift 5.1, и из-за характера их реализации их нельзя развернуть обратно в Swift 5.0 (в отличие от DSL). или Property-Wrappers ), и поскольку iOS 13 - это самый ранний iOS SDK, содержащий среду выполнения Swift 5.1 в ОС, поэтому ответ на вопрос отрицательный, а SwiftUI и Combine нельзя использовать в более ранних версиях iOS.
Если Apple не предоставляет способ связать среду выполнения Swift 5.1 (или будущие выпуски) с приложением, как это было раньше с более ранними версиями Swift, но поскольку это снова увеличит размер приложения и добавит накладные расходы для всей системы, я сомневаюсь, что это будет когда-либо случится.
Swift 5.1 еще не выпущен и SwiftUI
использует такие функции, как непрозрачные возвращаемые типы , DSL , propertyDelegate (представленный в WWDC как propertyWrapper ) и т.д., которые будут доступны только в Swift 5.1. Поскольку Swift 5 является бинарно стабильным, я предполагаю, что было невозможно использовать встроенные swift-frameworks внутри Xcode11, поэтому они повторно реализовали эти функции в ядре Cocoa и пометили их как iOS13 +, доступные до выхода Swift 5.1.
Мои предположения основаны на том факте, что Ordered Collection Diffing и DSL будут доступны в Swift 5.1 и не будут иметь корреляций с Xcode или экосистемой Apple, но они также помечены как @available(iOS13,...)
. Это означает, что они должны были пометить все с помощью функций Swift 5.1 атрибутом доступности iOS. Некоторые из них будут удалены после выхода Swift 5.1, но мы не можем быть уверены в этом, SwiftUI
и Combine
если Apple не сообщит иное. Это также упоминается в предложении DSL :
Реализация: PR . Обратите внимание, что реализация в предварительной версии Xcode для разработчиков использует несколько более простое преобразование, чем описанное здесь. Связанный PR отражает реализацию в предварительной версии, но находится в стадии активной разработки, чтобы соответствовать этому предложению.
Таким образом, ограничение обратной несовместимости может быть снято с выпуском Swift 5.1, но это действительно требует разъяснений от команды Apple .
Нет. SwiftUI требует целевого развертывания iOS 13 или новее, macOS 10.15 или новее, tvOS 13 или новее или watchOS 6 или новее. Фреймворк содержит множество новых типов, которых нет в старых версиях ОС.
Если вы снимаете для поддержки iPhone, а не iPad, вы, вероятно, могли ожидать, что большинство пользователей обновятся до iOS 13 в течение 12-18 месяцев (начиная с даты выпуска). Может 85-90%? (Я думаю, Apple заявила, что на данный момент есть еще 15% людей, не использующих iOS 12). Это еще довольно много времени, когда вы не сможете сразу развернуть приложения SwiftUI, иначе рискуете оттолкнуть многих пользователей.
Кроме того, в зависимости от того, каковы остальные 10-15%, это может означать, что много пользователей (и $$) для вас останутся на столе.
Если вы также поддерживаете iPad, это будет сложнее, потому что люди не так часто обновляют свои iPad. Есть много iPad 2, а также iPad 3-го и 4-го поколений, которые все еще находятся в дикой природе, на которых установлена только версия 10.3.3 и которые больше не могут обновляться. Люди просто не собираются вставать и платить от 400 до 1000 долларов за новый iPad, когда их iPad работает отлично.
Всегда есть место и необходимость в обновлении приложения, улучшении его, исправлении ошибок, которые не обязательно имеют какое-либо отношение к iOS 13. т.е. обнаружение ошибки, о которой вы не знали раньше, что недовольно многих пользователей. .не последней версии iOS. и мы даже не говорим о корпоративных / корпоративных клиентах, которых поддерживает множество разработчиков. Есть еще много откатов на обновления iOS по разным причинам в этой области.
Итак, прежде чем вы будете в восторге от iOS 13 и SwiftUI (что вам абсолютно необходимо, потому что это круто), вернувшись в реальный мир, за пределами Кремниевой долины, это не совсем соответствует ожиданиям среднего потребителя, и вам нужно будет поддерживать старые устройства и необходимость, потому что есть слишком много людей, которых вы оттолкнете.
К сожалению, согласно документации Apple, он доступен только с iOS 13.
Он совместим с iOS 13+. Вот ссылка на его документацию.
https://developer.apple.com/documentation/swiftui/
Даже Xcode 10 его не поддерживает. Вам необходимо использовать Xcode 11, который находится в стадии бета-тестирования (3 июня 2019 г.). https://developer.apple.com/tutorials/swiftui/creating-and-combining-views
работает только с ios 13 и новее
вы все равно можете прикрепить свой SwiftUI
код, используя
@available(iOS 13.0, *)
если вы все еще используете Xcode ниже Xcode 11 и имеете код SwiftUI, вы можете обернуть его
#if canImport(SwiftUI)
...
#endif
Это может решить проблему при компиляции с Xcode ниже Xcode 11.
Как все уже говорили, он не будет обратно совместим со старыми версиями iOS. Но учитывая, что Apple постоянно имеет высокую базу установки своей последней iOS, а также учитывая, что iOS 13 требует iPhone 6S или новее, iPad Air 2 или новее, нового iPad mini 4 и iPhone SE. Подавляющее большинство пользователей смогут установить iOS 13 и наслаждаться прекрасными приложениями SwiftUI.
Как уже упоминали все люди до меня, совершенно очевидно, что для этого потребуется iOS 13 или новее. Но как новый разработчик iOS я беспокоился о том, в какой степени мне следует принять SwiftUI по сравнению с UIKit. Я уже построил несколько небольших проектов с помощью UIKit и продвинулся с ним.
Но поскольку SwiftUI начался, как их объединить. Статья по следующей ссылке помещает все в контекст: https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both
Меня беспокоит только то, что я заметил с Xcode 11, что проект Xcode не может сочетать как раскадровки, так и SwiftUI.
К сожалению, нет, SwiftUI разрешен только в iOS 13 и выше. Он был представлен в среде iOS 13. До iOS 13 все было построено с использованием инфраструктуры Obj-C (включая Swift).
В правой части документации для разработчиков показаны поддерживаемые версии iOS, macOS, tvOS, watchOS и т. Д.
https://developer.apple.com/documentation/swiftui/
Надеюсь это поможет!