일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- await
- async
- combine
- Dynamic Dispatch
- @ObservedObject
- The Composable Architecture
- Universal Link
- App Thinning
- @StateObject
- matchedGeometryEffect
- MVVM
- architecture
- @main
- Custom URL Scheme
- AnyCancellable
- async/await
- Combine vs Async/Await
- wwdc23
- ios
- ScrollViewProxy
- SwiftUI
- SwiftData
- Concurrency Programming
- @NameSpace
- Static Dispatch
- ScrollViewReader
- SFSafariView
- swift
- fileprivate
- 이것이나의다정입니다
- Today
- Total
목록SwiftUI (7)
홍로그
📖DeepLink란? 딥링크(Deep Link)는 모바일 앱에서 특정 화면이나 기능으로 사용자를 바로 연결하게 해주는 링크 기술입니다. iOS에서 딥링크는 Universal Links와 Custom URL Scheme이라는 방식으로 구현됩니다. Universal Links Universal Links는 iOS 9 이상에서 사용하는, 앱과 웹 사이트 간의 연결을 간소화한 딥링크 방식입니다. Universal Links는 웹사이트와 앱의 특정 화면을 연결하고, 앱이 설치되어 있다면 사이트의 URL을 클릭하면 바로 해당 앱의 특정 화면으로 이동합니다. 앱이 없다면 기본 웹 페이지로 연결합니다. 이 기능을 활성화하려면, 앱 개발자는 웹서버에 apple-app-site-association 파일을 업로드하고, 앱..
📖 AnyCancellable이란? Combine 프레임워크는 데이터 스트림을 비동기적으로 처리할 수 있는 도구입니다. 이 프레임워크는 Publisher, Subscriber, Operator, Cancellable 등의 주요 요소로 구성되어 있습니다. Combine에서 비동기 작업을 수행할 때는 주로 Publisher에서 생성한 이벤트를 Subscriber로 전달해 처리하게 됩니다. 이 과정에서, AnyCancellable은 매우 중요한 역할을 합니다. 그 이유는 구독 작업이 끝난 경우에 리소스를 해제하고 구독(subscription)을 취소하는 역할을 하기 때문입니다. 객체가 생성되어 구독 과정이 시작되면, 실제로 구독 작업을 하는 동안 리소스가 사용됩니다. 이때 발생할 수 있는 문제점은 구독이 완료..
📖SwiftData란? SwiftData는 Swift 언어를 기반으로 한 강력한 데이터 모델링 및 관리 프레임워크입니다. 이 프레임워크는 현대적인 Swift 앱을 개발하는 데 사용되며, SwiftUI와 완벽하게 통합되어 앱의 데이터 모델을 효과적으로 관리할 수 있습니다. 또한 CloudKit와 같은 다른 플랫폼 기능과도 원활하게 작동합니다. SwiftData는 외부 파일 형식 없이 코드에만 집중하며, Swift의 새로운 매크로 시스템을 활용하여 매끄러운 API 경험을 제공합니다. SwiftData는 데이터 모델을 정의하기 위해 새로운 @Model 매크로를 도입하였습니다. SwiftData의 스키마는 일반적인 Swift 코드로 작성되지만, 필요한 경우 속성에 추가 메타데이터를 주석으로 추가할 수 있습니다...
📖 @NameSpace란? @Namespace는 SwiftUI에서 애니메이션에 사용되는 고유 식별자(ID)를 관리하는 역할을 합니다. 이 식별자는 여러 뷰와 함께 사용되며, 일반적으로 부드럽고 동기화된 애니메이션 효과를 만들기 위한 matchedGeometryEffect 수식어와 함께 사용됩니다. matchedGeometryEffect는 두 뷰 사이의 특정 요소를 동일하게 유지하거나 부드럽게 전환되게 하는 방법을 제공합니다. 이 수식어는 많은 애니메이션 시나리오에서 사용되며, 더욱 쉽게 구현할 수 있습니다. 예시코드 import SwiftUI struct ContentView: View { @Namespace private var animation @State private var isExpanded =..
📖 ScrollView & ScrollViewReader&ScrollViewProxy ScrollView ScrollView는 SwiftUI에서 스크롤 가능한 뷰를 만드는 데 사용되는 개체입니다. 리스트나 그리드의 콘텐츠를 스크롤할 수 있게 해 줍니다. ScrollView는 View 프로토콜을 채택하므로 다른 뷰와 동일한 방식으로 사용하실 수 있습니다. 예시코드 ScrollView { VStack(spacing: 10) { ForEach(1...100, id: \.self) { index in Text("Item \(index)") .frame(height: 20) } } } 이 경우, VStack 내부에 100개의 항목이 있는데, 이를 모두 보여주기 위해 스크롤할 수 있게 하는 것이 ScrollView..
📖 @StateObject vs @ObservedObject vs @EnvironmentObject SwiftUI에서 데이터 흐름은 뷰들이 데이터에 의존하고, 상태 변화가 생기면 뷰를 다시 그려야 하는 것에 대한 대응 방식입니다. 이런 스타일을 "선언적" 프로그래밍이라고 합니다. 이때, 속성 선언자들은 상태 변화를 뷰에 알리고 이를 관리하기 위한 역할을 담당합니다. 이러한 기능을 구현하기 위해서 ObservableObject 프로콜이 사용됩니다. ObservableObject 프로토콜은 해당 객체에 변화가 생길 때 뷰에 알릴 수 있는 기능을 제공합니다. Wrappers(@StateObject, @ObservedObject, @EnvironmentObject) 모두 ObservableObject를 다루는 ..
📖@State란? SwiftUI에서 @State는 프로퍼티 래퍼 중 하나로, UI의 상태를 표현하고 관리하는 데 사용됩니다. 사용자 인터랙션에 따라 일부 데이터 값은 변경될 수 있습니다. 이러한 변경이 UI에 반영되어야 할 때 @State를 사용하여 해당 데이터를 양방향으로 바인딩합니다. @State 프로퍼티 래퍼를 사용하여 구조체 내부의 값을 변경하면, SwiftUI는 변경된 상태를 감지하고 자동으로 해당 뷰를 다시 렌더링 합니다. 이를 통해 사용자에게 새로운 형태의 UI를 보여줄 수 있습니다@State를 사용하는 데이터는 주로 해당 뷰의 생명주기에 국한되며, 뷰 계층 구조에서 소유되는 뷰만이 해당 상태 접근해야 합니다. 또한, 상태값은 요청 시 신중하게 초기화되어야 합니다. import SwiftUI..