[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+ 베타
답변
SwiftUI 및 Combine 은 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 이므로 질문에 대한 대답은 아니오이며 SwiftUI 및 Combine 은 이전 버전의 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 Diffing 및 DSL 이 Swift 5.1에서 사용할 수 있으며 Xcode 또는 Apple의 에코 시스템과 상관 관계가 없지만 @available(iOS13,...)
. 즉, iOS 가용성 속성으로 Swift 5.1 기능을 사용하여 모든 것을 표시해야했습니다. 스위프트 5.1이 출시됩니다 일단 그들 중 일부는 제거 얻을 것이다, 그러나 우리는 확실히에 대해 할 수 없다 SwiftUI
와 Combine
애플이 달리 지시하지 않는 한. 이것은 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부터 만 사용할 수 있습니다.
답변
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