SwiftUI обратно совместим с iOS 12.x и старше? - программирование

SwiftUI обратно совместим с iOS 12.x и старше?

Если у меня есть приложение, созданное с помощью swiftUI, будет ли оно работать на iOS ниже iOS 13?

4b9b3361

Ответ 1

Я только что проверил это в Xcode 11 и могу подтвердить, что он не будет обратно совместимым, как это видно в реализации SwiftUI View:

/// 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 }
}

Ответ 2

Я так не думаю, потому что все библиотеки уже аннотированы для iOS 13 или выше.

Также в документации Apple четко упоминает поддерживаемые версии:

  • iOS13. 0+ бета
  • macOS10. 15+ бета
  • tvOS 13. 0+ бета
  • watchOS 6. 0+ бета

enter image description here

Ответ 3

Это может быть обратно совместимо

Swift 5.1 еще не выпущен, и SwiftUI использует такие функции, как непрозрачные типы возврата, DSL, propertyDelegate (представленный в WWDC как propertyWrapper) и т.д., SwiftUI будут доступны только в Swift 5.1. Поскольку Swift 5 является бинарной стабильной, я думаю, что было невозможно использовать встроенные swift-frameworks внутри Xcode11, поэтому они повторно реализовали эти функции в ядре Cocoas и пометили их как 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.

Ответ 4

Нет. SwiftUI требует цели развертывания iOS 13 или более поздней версии, macOS 15 или более поздней версии, tvOS 13 или более поздней версии или watchOS 6 или более поздней версии. Каркас содержит много новых типов, которых нет в старых версиях ОС.

Ответ 7

Если вы используете iPhone, а не iPad, вы, вероятно, ожидаете, что большинство пользователей обновят iOS 13 в течение 12-18 месяцев (начиная с даты выпуска). Может 85-90%? (Я думаю, что Apple сказала, что на данный момент все еще 15% людей не работают на iOS 12). Это все еще довольно долгое время, хотя там, где вы не сможете сразу развернуть приложения SwiftUI, иначе вы рискуете оттолкнуть многих пользователей.

Кроме того, в зависимости от того, что составляют остальные 10-15%, это может означать, что многие пользователи (и $$) для вас останутся на столе.

Если вы также поддерживаете iPad, то это сложнее, потому что люди не обновляют свои iPad так часто. Theres много iPad 2s, а также iPad 3-го и 4-го поколения все еще в дикой природе, которые имеют только 10.3.3 и не могут больше обновляться. Люди просто не собираются вставать и платить от 400 до 1000 долларов за новый iPad, когда у них отлично работает.

Всегда есть место и необходимость обновлять приложение, делать его лучше, исправлять ошибки, которые не обязательно имеют какое-либо отношение к iOS 13. то есть обнаружение ошибки, о которой вы раньше не знали, делает многих пользователей несчастными. последняя версия iOS. и мы даже не говорим о корпоративных/корпоративных клиентах, которых поддерживают многие магазины разработчиков. Theres много больше откат на обновления iOS по различным причинам в этой области.

Поэтому, прежде чем вы будете в восторге от iOS 13 и SwiftUI (что вам абсолютно необходимо, потому что это круто) в реальном мире, за пределами Силиконовой долины, это не совсем соответствует тому, что ожидает средний потребитель, и вам нужно будет поддержать старые устройства и нужно, потому что есть слишком много людей, которых вы бы оттолкнули.

Ответ 8

Как все говорили, он не будет обратно совместим со старыми версиями iOS. Но с учетом того, что Apple постоянно имеет высокую инсталляционную базу своих последних версий iOS, а также с учетом того, что для iOS 13 требуется iPhone 6S или более поздняя версия, iPad Air 2 или более поздняя версия, новый iPad mini 4 и iPhone SE. Подавляющее большинство пользователей смогут установить iOS 13 и наслаждаться прекрасными приложениями SwiftUI.

Ответ 9

Я надеюсь, что Apple обновит его, когда официальный релиз в сентябре. Представьте, что вы создаете приложение и решаете использовать swiftUI, но оно не поддерживает более старую версию iOS, и вы потеряете много пользователей, которые не используют iOS 13+, потому что ничто не может гарантировать, что все пользователи обновятся до последней iOS, даже если они используют совместимые устройства. Но это только мое скромное мнение. Надеюсь так: D

Ответ 10

Я создал один пример приложения, используя Xcode11-Beta на macOS10.15-Beta.

Я понизил цель развертывания до 12.4, XCode генерирует много ошибок.

Прикреплено несколько скриншотов

Также в документации Apple Xcode 11 написано (НИЖЕ)

/// 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 ниже, чем iOS 13 при сборке с использованием SwiftUI

enter image description here

Ответ 11

работает только для ios 13 или новее

вы все еще можете прикрепить свой код SwiftUI с помощью

@available(iOS 13.0, *)