SwiftUI로 만든 앱이있는 경우 iOS 13 이하의 iOS에서 작동합니까?
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은 지원되는 버전을 명확하게 언급합니다.
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
모두가 말했듯이 이전 iOS 버전과 역 호환되지 않습니다. 그러나 Apple은 지속적으로 최신 iOS의 설치 기반이 높고 iOS 13에는 iPhone 6S 이상, iPad Air 2 이상, 새로운 iPad mini 4 및 iPhone SE가 필요합니다. 대다수의 사용자는 iOS 13을 설치하고 멋진 SwiftUI 앱을 즐길 수 있습니다.
이전의 모든 사람들이 언급했듯이 iOS 13 이상이 필요하다는 것은 매우 분명합니다. 하지만 새로운 iOS 개발자로서 UIKit에 비해 SwiftUI를 어느 정도 채택해야할지 고민했습니다. 나는 이미 UIKit으로 몇 가지 작은 프로젝트를 만들었고 그것으로 어딘가로 나아갔습니다.
그러나 SwiftUI가 시작되면서 이들을 결합하는 방법. 다음 링크의 기사는 모두 맥락에 맞 춥니 다 : https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both
내 유일한 관심사는 Xcode 11에서 Xcode 프로젝트가 Storyboard와 SwiftUI를 모두 결합 할 수 없다는 것을 알게되었다는 것입니다.
안타깝게도 SwiftUI는 iOS 13 이상에서만 허용됩니다. iOS 13 프레임 워크에서 도입되었습니다. iOS 13 이전에는 모든 것이 Obj-C 프레임 워크 (Swift 포함)를 사용하여 빌드되었습니다.
개발 문서의 오른쪽에는 iOS, macOS, tvOS, watchOS 등의 지원되는 버전이 표시됩니다.
https://developer.apple.com/documentation/swiftui/
도움이 되었기를 바랍니다!