KoreaMango 나무

[iOS App Dev Tutorials] SwiftUI - Persistence and Concurrency (2) 본문

iOS/iOS App Dev Tutorials

[iOS App Dev Tutorials] SwiftUI - Persistence and Concurrency (2)

KoreaMango 2022. 5. 18. 21:25
 

Apple Developer Documentation

 

developer.apple.com

2. Adopting New API Features

각 SDK 버전은 새로운 기술, 구조, 언어 특성을 포함한다. 이 글에서는 호환성을 유지하면서 API를 적용하는 방법에 대해 알아보자.

Setting a Deployment Target

Xcode 프로젝트의 각 프로젝트에는 앱을 실행할 수 있는 운영체제의 초기 버전을 지정하는 배포 대상 설정이 있다. 이 설정은 앱을 개발하는 데 사용할 수 있는 프레임워크 버전을 결정한다. 새 기능, 또는 프레임 워크를 채택하려는 경우 이 설정을 변경할 수 있다.

이 프로젝트는 iOS 14.0의 배포 목표를 갖고 있다. 즉, iOS 14.0 이상을 실행하는 모든 장치에서 앱을 실행할 수 있다.

iOS 15.0에 도입된 listRowSeparator(_: edge:) 수정자를 사용하여 ScrumsList 에서 구분자를 숨긴다고 가정하면, 수정자를 추가하면 Xcode는 iOS 15 이상에서만 사용할 수 있기 때문에 컴파일러 오류를 표시하지만 앱은 여전히 iOS 14 를 지원합니다. 오류를 수정하려면 Scrumdinger의 배포대상을 iOS 15 으로 설정해야한다.

Checking for an Operating System Version

사용 가능한 조건을 사용하여 이전 버전의 호환성을 유지할 수 있다.

struct ScrumsListSeparator: ViewModifier {
   func body(content: Content) -> some View {
      if #available(iOS 15, *) {
         content
            .listRowSeparator(.hidden)
      } else {
         content
     }
   }
}

#available을 사용하면 특정 버전의 운영체제에 대한 코드를 실행할 수 있다. 다음 예제의 보기 한정자는 iOS 15.0 이상을 실행하는 장치에만 listRowSeparator(_:edges:) 한정자를 적용합니다.

@available 속성을 사용하여 특정 운영 체제에서 사용할 수 있는 함수 또는 전체 유형을 표시할 수 있다. 아래에 정의된 기능은 iOS 15.1 이상에서만 액세스할 수 있다.

@available(iOS 15.1, *)
func setupGroupSession() {...}