일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- @NameSpace
- architecture
- async/await
- SwiftUI
- wwdc23
- Dynamic Dispatch
- swift
- The Composable Architecture
- await
- Custom URL Scheme
- Static Dispatch
- App Thinning
- Combine vs Async/Await
- AnyCancellable
- ScrollViewProxy
- Concurrency Programming
- ScrollViewReader
- 이것이나의다정입니다
- MVVM
- SFSafariView
- SwiftData
- combine
- Universal Link
- async
- ios
- @ObservedObject
- @main
- fileprivate
- @StateObject
- matchedGeometryEffect
- Today
- Total
목록전체 글 (32)
홍로그
📖fileprivate과 private의 차이 fileprivate과 private은 Swift에서 접근 제어자 중 하나입니다. 접근 제어자는 class, struct, enum, protocol 등의 범위와 기능에 따라 코드의 접근을 제한할 수 있도록 도와줍니다. open / public: 전체 프로젝트 어디에서든 접근이 가능한 가장 높은 접근 수준 internal: 해당 모듈 내에서만 접근이 가능하며, 기본 접근 수준 fileprivate: 현재 정의된 파일 내에서만 접근이 가능한 접근 수준 private: 현재 정의된 class, struct, enum 등의 scope 내에서만 접근이 가능한 가장 낮은 접근 수준 fileprivate 파일 내 어디에서든 접근이 가능한 접근 제한자입니다. 같은 파일 ..

📖TCA란? iOS의 TCA(The Composable Architecture)는 SwiftUI 및 Combine을 사용하여 앱 아키텍처를 구축하는 프레임워크입니다. TCA는 앱의 로직을 크게 단순화하고 테스트 가능한 컴포넌트로 구성하여 코드 재사용과 확장성을 증가시키는 것에 초점을 맞추고 있습니다. TCA는 복잡하고 다양한 목적을 가진 앱을 구축하는 데 사용할 수 있고 앱 개발에 있어서 매일 마주하는 많은 문제들을 해결하기 위한 구체적인 방법들을 제공합니다. State management 단순한 값 유형을 사용하여 앱의 상태를 관리하고 여러 화면 간에 상태를 공유하여 한 화면에서 발생한 변화가 다른 화면에서 즉시 관찰될 수 있도록 하는 방법입니다. Composition 큰 기능을 작은 구성 요소로 분해..
📖Concurrency Programming이란? Concurrency Programming은 여러 개의 작업을 동시에 실행하거나 처리하는 방법을 말합니다. iOS에서는 이를 효과적으로 관리하기 위해 다양한 concurrency models, tools, 그리고 기술이 제공되고 있습니다. Concurrency Programming은 앱의 성능을 향상시키고 사용자 경험을 개선하는 데 도움을 줍니다. GCD(Grand Central Dispatch) GCD는 앱 내에서 작업을 큐에 추가하고, 시스템이 이를 관리하여 필요한 스레드에서 실행하도록 합니다. GCD는 다양한 큐(메인 큐, 백그라운드 큐 등)와 디스패치 그룹을 제공하여 작업을 관리하고 우선순위를 설정할 수 있습니다. 비동기적인 작업을 처리하거나 동시..

📖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..
📖 @main이란? @main은 SwiftUI에서 사용되는 속성(attribute) 중 하나로, 애플 iOS 앱의 진입점(entry point)을 정의합니다. @main은 iOS 앱을 진입점에 있는 구조체 또는 클래스로 초기화하는 Swift 특성입니다. 즉, @main은 앱의 시작점을 구체적으로 지정하는 데 사용됩니다. @main을 사용하면 UIKit 및 SwiftUI 앱에서 앱의 진입 포인트 역할을 하는 앱 델리게이트 객체를 구현할 필요가 없어집니다. 이를 통해 개발자는 소스 코드를 간결하게 유지하고, 앱의 진입 지점을 명확히 표현할 수 있습니다. 또한, @main은 SwiftUI에서 가장 많이 사용되는데, SwiftUI 앱의 경우 기본적으로 @main으로 시작되며, App 프로토콜을 구현하는 구조체 ..

📖 App Thinning이란? App Thinning은 앱의 크기를 줄이고 다운로드 속도를 높이기 위한 전략입니다. 이를 통해 사용자는 저장 공간을 절약하고 앱의 성능을 최적화할 수 있습니다. App Thinning은 슬라이싱, 비트코드, 온디맨드 리소스 이렇게 세 가지 주요 구성소로 이루어져 있습니다. 1. 슬라이싱(Slicing) 개발자는 기기 및 운영체제에 맞춰 최적화된 앱 빌드 버전을 생성하기 위해 리소스를 준비해야 합니다. 이를 위해 Asset Catalog를 사용하고 이미지 및 기타 리소스를 명명하여, 앱 코드에서 알맞은 버전의 리소스를 불러오게 됩니다. 앱스토어는 개발자가 제공한 리소스를 기반으로 기기에 맞는 최적화된 앱 빌드버전을 생성하여 사용자에게 제공합니다. 이렇게 함으로써 사용자들이..