분류 전체보기 58

[RxSwift] Subject, Relay

1. SubjectSubject는 Observable과 Observer의 역할을 동시에 수행할 수 있는 특수한 객체.이를 통해 Subject는 구독을 통해 값을 방출하고, 외부에서 값을 받아 새로운 이벤트를 방출할 수 있음.1-1. PublishSubjectPublishSubject 특징초기에는 아무런 값도 방출되지 않기 때문에 구독 전에 발생한 값은 무시.구독자가 구독한 시점 이후에 발생하는 next 이벤트만 전달.구독자가 있는 동안 completed 또는 error 이벤트가 발생하면 모든 구독자에게 전달.구독이 종료되거나 completed, error 이벤트가 발생하면 더 이상 이벤트가 방출되지 않음.PublishSubject 예시import RxSwiftfunc examplePublishSubjec..

RxSwift 2024.05.29

[RxSwift] Observable, Observer, Subscribe, Dispose

이벤트를 방출하는 Observable이벤트를 관찰 및 처리하는 Observer이 둘을 연결하는 것이 Subscribe이 둘의 연결을 끊는 것이 Dispose1. ObservableObservable은 RxSwift에서 시퀀스, 스트림 등으로 불리며, 비동기적으로 이벤트를 방출(emit)하는 시퀀스를 의미한다.Observable은 시간이 지남에 따라 여러 이벤트를 발생시킬 수 있으며, 각 이벤트는 값을 포함할 수도, 에러 또는 완료를 나타낼 수도 있다.2. Observable의 이벤트Observable은 대표적으로 세 가지 이벤트를 방출한다.next: 새로운 값을 방출하는 이벤트.error: 오류가 발생하여 시퀀스를 종료하는 이벤트.completed: 모든 값을 방출한 후 시퀀스를 종료하는 이벤트.Obse..

RxSwift 2024.05.23

[SwiftUI] @AppStorage

`@AppStorage`SwiftUI에서 제공하는 속성 래퍼로, UserDefaults와 연동하여 간편하게 데이터를 저장하고 관리 가능.`@AppStorage` 사용 시 특정 데이터가 앱 전체에서 공유되고, 앱을 종료해도 유지되는 속성을 쉽게 정의 가능.이 래퍼는 특히 SwiftUI 뷰에서 사용자 설정, 앱 상태 등을 저장하고 불러오는 데 유용.자동으로 상태 변화를 감지하고 UI를 업데이트하므로, UserDefaults와 직접 상호작용하는 것보다 편리.1. 사용법`@AppStorage`는 속성에 키와 기본값을 지정하여 사용.내부적으로 UserDefaults에 접근하여 저장 및 조회를 수행하며, 데이터 타입은 UserDefaults에서 지원하는 `Bool`, `Int`, `Double`, `String`,..

SwiftUI 2024.05.23

[SwiftUI] @ObservableObject / @Published / @StateObject / @ObservedObject

`@ObservableObject`, `@Published`, `@StateObject`, `@ObservedObject`는 상태 관리와 데이터 흐름을 위한 속성 래퍼.이 속성들은 각기 다른 용도로 사용되며, 뷰와 데이터 모델 간의 데이터를 연결하고 상태 변경 시 뷰를 업데이트하는 역할.1. `@ObservableObject`정의`@ObservableObject`는 관찰 가능한 객체를 정의하는 데 사용.`ObservableObject` 프로토콜을 채택한 클래스에 적용하며, 해당 객체에서 발생하는 상태 변경을 뷰에 알림.주요 특징클래스에 사용Swift의 `class`에서만 사용할 수 있음.Publisher 역할`@Published` 속성이 변경되면 `ObservableObject`는 변경 사실을 알림.Co..

SwiftUI 2024.05.20

[SwiftUI] @ViewBuilder

`@ViewBuilder`란?`@ViewBuilder`는 SwiftUI에서 여러 뷰를 묶어 하나의 반환 값으로 처리할 수 있도록 돕는 결과 빌더(Result Builder).이를 통해 SwiftUI에서 여러 개의 뷰를 조건적으로 반환하거나 반복적으로 생성하는 UI 코드를 간결하고 선언적으로 작성할 수 있음.SwiftUI에서 많이 사용되는 `VStack`, `HStack`, `ZStack`과 같은 컨테이너 안에서 여러 뷰를 배치하거나, 뷰 속성을 정의할 때 사용. `@ViewBuilder`는 특히 SwiftUI가 뷰의 계층 구조를 효율적으로 관리하고 렌더링하는 데 중요한 역할.1. `@ViewBuilder`의 역할여러 뷰를 하나의 뷰로 반환SwiftUI에서 여러 뷰를 반환하면 이를 하나로 묶어 렌더링할 수..

SwiftUI 2024.05.20

[Swift] @available

`@available``@available`는 Swift 코드에서 특정 플랫폼과 버전 조건에 따라 접근 가능성을 선언하는 데 사용.이는 컴파일러에게 해당 코드가 특정 플랫폼 버전 이상에서만 사용할 수 있음을 알리기 위한 주석으로 작동.주로 함수, 클래스, 구조체, 프로토콜, 속성 등 선언부에 사용.1. `@available` 기본 문법@available(platformName version, *, deprecated: version, message: "reason")주요 구성 요소platformName: iOS, macOS, watchOS, tvOS 등의 플랫폼 이름.version: 플랫폼 버전 번호.`*`: 다른 모든 플랫폼을 포함.deprecated: 코드가 특정 버전 이상에서 더 이상 권장되지 않음..

Swift 2024.05.19

[Swift] #available

`#available``#available`는 Swift에서 런타임 시점에 특정 플랫폼 및 버전 조건을 검사하여 실행 흐름을 제어하는 데 사용.이는 코드가 실행되는 환경이 특정 플랫폼 버전을 지원하는지 확인하고, 지원 여부에 따라 다른 동작을 수행할 수 있게 함.런타임 조건문으로 동작하며, 주로 API 가용성 검사에 사용.1. `#available`의 문법if #available(platformName version, *, ...) { // 해당 버전 이상에서 실행할 코드} else { // 하위 버전에서 실행할 코드}주요 구성 요소platformName: 플랫폼 이름 (iOS, macOS, watchOS, tvOS 등).version: 해당 플랫폼의 최소 지원 버전.`*`: 지정되지 않은 다..

Swift 2024.05.19

[Swift] 버전 대응 Wrapper

버전 대응 WrapperSwift 애플리케이션에서 iOS, macOS 등 특정 플랫폼 버전에 따라 코드를 실행하거나 기능을 활성화해야 하는 경우가 종종 존재.이러한 요구를 처리하기 위해 버전 대응 Wrapper를 활용하여 코드의 가독성과 재사용성을 높일 수 있음.1. 기본 버전 조건 처리Swift는 @available 및 #available 키워드를 사용하여 플랫폼 및 버전 조건을 확인.if #available(iOS 16, macOS 13, *) { print("iOS 16 이상에서 동작")} else { print("이전 버전에서 동작")}#available: 실행 시점에서 조건 확인.@available: 컴파일 시점에서 사용 가능성을 표시.예제: 뷰에 버전 따라 다른 스타일 적용struc..

Swift 2024.05.19

[SwiftUI] AsyncImage in SwiftUI

AsyncImage in SwiftUIAsyncImage는 SwiftUI에서 비동기로 이미지를 로드하고 표시하는 간단한 방법을 제공.주로 네트워크 URL에서 이미지를 로드할 때 사용. iOS 15 이상에서 사용할 수 있음.1. AsyncImage의 기본 사용법struct AsyncImageExample: View { var body: some View { AsyncImage(url: URL(string: "")) }}URL: 네트워크에서 이미지를 가져올 URL.기본적으로, AsyncImage는 이미지를 다운로드하고 성공적으로 로드되면 표시.2. 기본 Placeholder와 비동기 처리이미지가 로드되는 동안 또는 로드에 실패한 경우의 처리를 위해 AsyncImage는 클로저를 제공...

SwiftUI 2024.05.13

[SwiftUI] ForEach in SwiftUI

ForEach in SwiftUIForEach는 SwiftUI에서 컬렉션의 요소를 반복(iterate)하여 동적으로 뷰를 생성할 때 사용하는 뷰.SwiftUI는 선언적 UI 프레임워크이므로 반복문(for-in) 대신 ForEach를 사용하여 간결하고 효율적인 방식으로 UI를 구성.1. ForEach 기본 구조ForEach(data, id: \\.self) { item in Text(item)}매개변수데이터 (data)반복하려는 컬렉션. 배열, 범위, 식별 가능한 데이터 등이 될 수 있음.식별자 (id)각 항목을 고유하게 식별하기 위한 값. (예: id: \\.self 또는 모델의 고유 식별자)뷰 클로저각 항목에 대해 생성할 뷰를 정의하는 클로저.2. ForEach 사용 예제배열을 반복하기struct..

SwiftUI 2024.05.13