[swift] SwiftUI는 iOS 12.x 및 이전 버전과 역 호환됩니까?

SwiftUI로 만든 앱이있는 경우 iOS 13 이하의 iOS에서 작동합니까?



답변

방금 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 }
}


답변

모든 라이브러리가 이미 iOS 13 이상용으로 주석 처리되어 있기 때문에 그렇게 생각하지 않습니다.

또한 문서 에서 Apple은 지원되는 버전을 명확하게 언급합니다.

  • iOS13.0 + 베타
  • macOS10.15 + 베타
  • tvOS 13.0+ 베타
  • watchOS 6.0+ 베타

여기에 이미지 설명 입력


답변

SwiftUICombine 은 Swift 5.1에서 Opaque-Return-Types 를 사용 하며 Opaque-Return-Types (다른 기능과 함께)는 Swift 5.1에서 구현되고 구현의 특성으로 인해 Swift 5.0 으로 다시 배포 할 수 없습니다 ( DSL 과 달리) 또는 Property-Wrappers ), iOS 13은 OS에서 Swift 5.1 런타임 을 포함하는 가장 초기의 iOS SDK 이므로 질문에 대한 대답은 아니오이며 SwiftUICombine 은 이전 버전의 iOS에서 사용할 수 없습니다.

Apple 이 이전 Swift 버전에서와 같이 응용 프로그램과 함께 Swift 5.1 런타임 (또는 향후 릴리스) 을 번들링하는 방법을 제공하지 않는 한, 앱 크기를 늘리고 전체 시스템에 오버 헤드를 다시 추가 할 것이기 때문에 이것이 의심 스럽습니다. 절대 일어나지 않습니다.

그것은 수있는 하위 호환성

Swift 5.1은 아직 출시되지 않았으며 , Swift 5.1 에서만 사용할 수있는 불투명 반환 유형 , DSL , propertyDelegate (WWDC에서 propertyWrapper 로 도입 됨) SwiftUI등과 같은 기능을 사용합니다 . Swift 5는 바이너리 안정이기 때문에 Xcode11 내부에 내장 된 swift-frameworks를 사용할 수 없었기 때문에 Cocoa의 코어에서 이러한 기능을 다시 구현하고 Swift 5.1이 출시 될 때까지 iOS13 +로 표시했습니다.

내 가정은 Ordered Collection DiffingDSL 이 Swift 5.1에서 사용할 수 있으며 Xcode 또는 Apple의 에코 시스템과 상관 관계가 없지만 @available(iOS13,...). 즉, iOS 가용성 속성으로 Swift 5.1 기능을 사용하여 모든 것을 표시해야했습니다. 스위프트 5.1이 출시됩니다 일단 그들 중 일부는 제거 얻을 것이다, 그러나 우리는 확실히에 대해 할 수 없다 SwiftUICombine애플이 달리 지시하지 않는 한. 이것은 DSL 의 제안 에서도 언급됩니다 .

구현 : PR . Xcode 개발자 미리보기의 구현은 여기에 설명 된 것보다 약간 더 간단한 변환을 사용합니다. 링크 된 PR 은 미리보기의 구현을 반영하지만이 제안에 맞게 개발 중입니다.

따라서 Swift 5.1이 출시되면 이전 버전과의 비 호환성 제한이 해제 될 수 있지만 실제로 Apple 팀에서 명확히해야합니다 .


답변

아니요. SwiftUI 에는 iOS 13 이상, macOS 10.15 이상, tvOS 13 이상 또는 watchOS 6 이상의 배포 대상이 필요합니다. 프레임 워크에는 이전 버전의 OS에 존재하지 않는 많은 새로운 유형이 포함되어 있습니다.


답변

iPad가 아닌 iPhone을 지원하기 위해 촬영하는 경우 대부분의 사용자가 12-18 개월 (출시일부터) 내에 iOS 13으로 업그레이드 할 것으로 예상 할 수 있습니다. 85-90 %일까요? (이 시점에서 Apple이 iOS 12를 사용하지 않는 사람들의 15 %가 여전히 있다고 말했다고 생각합니다.) SwiftUI 앱을 즉시 배포 할 수 없거나 많은 사용자를 소외시킬 위험이있는 곳까지는 아직 꽤 오랜 시간입니다.

또한 다른 10-15 %가 무엇인지에 따라 많은 사용자 (및 $$)가 테이블에 남아 있음을 의미 할 수 있습니다.

iPad도 지원하는 경우 사람들이 iPad를 자주 업그레이드하지 않기 때문에 더 까다 롭습니다. 10.3.3 만 있고 더 이상 업그레이드 할 수없는 3 세대 및 4 세대 iPad와 함께 iPad 2가 많이 있습니다. 사람들은 완전히 잘 작동 할 때 새로운 iPad를 위해 일어나서 $ 400-$ 1,000 사이를 지불하지 않을 것입니다.

앱 업데이트, 개선, 버그 수정, iOS 13과 반드시 ​​관련이있는 것은 아닙니다. 예를 들어 이전에 알지 못했던 버그를 찾는 것은 많은 사용자를 불행하게 만듭니다. . 최신 iOS 버전이 아닙니다. 그리고 우리는 많은 개발 상점이 지원하는 기업 / 기업 고객에 대해서도 이야기하지 않았습니다. 그 영역에서 다양한 이유로 iOS 업데이트에 대한 더 많은 푸시 백이 있습니다.

따라서 iOS 13 및 SwiftUI에 대해 모두 흥분하기 전에 (굉장하기 때문에 절대적으로해야합니다) 실리콘 밸리 외부의 실제 세계로 돌아 가면 일반 소비자가 기대하는 것과 정확히 일치하지 않으며 지원해야합니다. 너무 많은 사람들이 소외 될 것이기 때문입니다.


답변

Apple 문서에 따르면 불행히도 iOS 13부터 만 사용할 수 있습니다.

https://developer.apple.com/documentation/swiftui/


답변

iOS 13 이상과 호환됩니다. 다음은 문서에 대한 링크입니다.

https://developer.apple.com/documentation/swiftui/


Xcode 10조차도 지원하지 않습니다. (2019 년 6 월 3 일) 베타 버전 인 Xcode 11을 사용해야합니다.
https://developer.apple.com/tutorials/swiftui/creating-and-combining-views