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


123

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


1
해보지 그래? Xcode 11 베타를 다운로드 할 수 있으며 튜토리얼은 여기 developer.apple.com/tutorials/swiftui 입니다.
Martin R

1
사람들은 누구의 노하우를 수행 나의 대답은 장 - 프랑수아 파브르 @에 의해 삭제 이유
CrazyPro007

10
아니요, SwiftUI는 iOS 12.x 및 이전 버전에서는 작동하지 않습니다.
ystack 19-06-12

답변:


89

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

7
적어도 5 년은 더? 그렇다면 현재 iOS 7 이하에서 사용할 수있는 API 만 사용하고 있습니까?
데이비드 Monagle

5
가장 이상한 점은 Catalina (10.5)에서만 실행되는 Mojave (10.4)에서 xcode 11로 SwiftUI 애플리케이션을 만들 수 있다는 것입니다.
Túlio Calazans

34

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

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

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

여기에 이미지 설명 입력


32

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 팀에서 명확히해야합니다 .


1
이것에 대한 업데이트가 있습니까? 언급하신 PR이 합병되고 Swift 5.1이 출시되었습니다
user158

@ user158 방금 답변을 업데이트하고이 기능을 지원할 수없는 이유를 설명했습니다.
farzadshbfn

15

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


낮은 배포 대상을 지원하면서 iOS 13에서 SwiftUI를 사용할 수 있습니다. 제발 체크 stackoverflow.com/a/58372597/840742
Renatus

13

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


1
"지원되지 않는"iPhone을 사용하는 많은 사람들을 알고 있으므로 최신 iOS 릴리스에 대해 100 %에 도달하지 못할 것입니다. 나는 내 옆에 전화에 대해 오랫동안 열심히 생각하고있을 시간 내 현재의 다이
개빈

@cspam 당신의 가정이 맞을지 모르지만 그들은 질문에 대답하지 않습니다.
user1892364

우리는 아이폰 OS (13)에 대해 동일한 채택률 기대할 수있는 경우 아이폰 OS (12)는 말을 열심히 그래서 장치의 10 % 이상에 대한 지원을 드롭하지 않았다
캐스퍼 Zandbergen

SwiftUI 는 이전 장치를 지원해야하며 너무 많은 사람들이 소외 될 것이기 때문에 필요합니다! thumb
Trevor

9

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

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


링크 된 모든 문서에 따르면 iOS 13 SDK (예 : Xcode 11)를 사용해야합니다. 그렇다고 기기의 최소 지원 iOS 버전이 iOS 13이어야한다는 의미는 아닙니다. 이전 iOS 버전도 잘 지원할 수 있습니다 ...
비늘


6

iOS 13 이상에서만 작동합니다.

계속 사용하여 SwiftUI코드를 첨부 할 수 있습니다.

@available(iOS 13.0, *)

Xcode 11 이하의 Xcode를 계속 사용하고 SwiftUI 코드가있는 경우 다음으로 래핑 할 수 있습니다.

#if canImport(SwiftUI)
...
#endif

이것은 Xcode 11 이하의 Xcode로 컴파일 할 때 문제를 해결할 수 있습니다.


4

모두가 말했듯이 이전 iOS 버전과 역 호환되지 않습니다. 그러나 Apple은 지속적으로 최신 iOS의 설치 기반이 높고 iOS 13에는 iPhone 6S 이상, iPad Air 2 이상, 새로운 iPad mini 4 및 iPhone SE가 필요합니다. 대다수의 사용자는 iOS 13을 설치하고 멋진 SwiftUI 앱을 즐길 수 있습니다.


3
내 iPad는 iOS 13에 대한 컷을 만들지 않으며, 여전히 강하고 잠시 동안 교체 될 것입니다. (나는 희망) 여기에서 내가 좋아하는 / 필요한 앱이 오래된 장치를 표류하지 않기를 바랍니다.
Gavin

3

이전의 모든 사람들이 언급했듯이 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를 모두 결합 할 수 없다는 것을 알게되었다는 것입니다.


3

안타깝게도 SwiftUI는 iOS 13 이상에서만 허용됩니다. iOS 13 프레임 워크에서 도입되었습니다. iOS 13 이전에는 모든 것이 Obj-C 프레임 워크 (Swift 포함)를 사용하여 빌드되었습니다.

개발 문서의 오른쪽에는 iOS, macOS, tvOS, watchOS 등의 지원되는 버전이 표시됩니다.

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

도움이 되었기를 바랍니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.