목록Swift & SwiftUI (3)
J
버전 대응 WrapperSwift 애플리케이션에서 iOS, macOS 등 특정 플랫폼 버전에 따라 코드를 실행하거나 기능을 활성화해야 하는 경우가 종종 존재.이러한 요구를 처리하기 위해 버전 대응 Wrapper를 활용하여 코드의 가독성과 재사용성을 높일 수 있음.1. 기본 버전 조건 처리Swift는 @available 및 #available 키워드를 사용하여 플랫폼 및 버전 조건을 확인.if #available(iOS 16, macOS 13, *) { print("iOS 16 이상에서 동작")} else { print("이전 버전에서 동작")}#available: 실행 시점에서 조건 확인.@available: 컴파일 시점에서 사용 가능성을 표시.예제: 뷰에 버전 따라 다른 스타일 적용struc..
1. Property WrapperPropertyWrapper는 Swift에서 속성의 동작을 캡슐화하여 속성 접근과 변경에 특정 로직을 추가할 수 있도록 지원하는 기능.반복적인 코드를 줄이고 속성의 동작을 추상화하여 재사용 가능한 구조를 제공.@propertyWrapper를 사용해 정의되며, SwiftUI의 @State, @Binding, @AppStorage 등이 대표적인 예.2. Property Wrapper 기본 구조@propertyWrapperstruct ClampedValue { private var value: Int private let range: ClosedRange var wrappedValue: Int { get { value } set..
1. Opaque Type (some 키워드)Swift의 Opaque Type은 함수나 속성이 반환하는 구체적인 타입을 숨기고 대신 타입 정보를 추론할 수 있도록 하는 기능.Ssome 키워드를 사용하여 선언하며, 내부적으로 반환되는 타입이 하나로 고정되지만, 호출자는 타입 정보를 알 필요 없이 사용 가능.이 기능은 Generic과 비슷해 보이지만, 동작 방식에서 중요한 차이점이 존재.Opaque Type은 주로 캡슐화와 유연한 반환 타입 설계에 사용.2. Opaque Type 사용법func makeOpaqueShape() -> some Shape { Circle() // Shape 프로토콜을 준수하는 Circle 반환}반환 타입이 some Shape로 정의되었으므로, 함수는 Shape 프로토콜을 준..