일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- The Composable Architecture
- Dynamic Dispatch
- Static Dispatch
- Custom URL Scheme
- @ObservedObject
- @StateObject
- SFSafariView
- Universal Link
- architecture
- SwiftData
- @NameSpace
- ScrollViewReader
- 이것이나의다정입니다
- await
- ScrollViewProxy
- MVVM
- SwiftUI
- async
- ios
- Combine vs Async/Await
- fileprivate
- App Thinning
- Concurrency Programming
- swift
- @main
- combine
- AnyCancellable
- async/await
- matchedGeometryEffect
- wwdc23
- Today
- Total
목록전체 글 (32)
홍로그

📖 MVP 패턴이란? MVP (Model-View-Presenter) 디자인 패턴은 소프트웨어 개발에서 사용되는 구조화된 아키텍처이며, 사용자 인터페이스와 비즈니스 로직의 분리를 돕습니다. MVP 패턴은 애플리케이션의 각 부분이 서로에게 최소한의 의존성을 갖게 함으로써 변경 및 유지 관리에 용이한 코드를 얻을 수 있다는 이점이 있습니다. Model: 애플리케이션의 데이터 및 비즈니스 로직을 담당합니다. Model은 데이터에 접근하고 처리하는 메서드와, 비즈니스 로직을 수행하는 메서드를 구현합니다. 이러한 메서드는 각종 데이터 소스, API 호출 및 내부 연산에 대 인터페이스를 제공하게 됩니다. View: View는 사용자 인터페이스와 관련된 모든 것을 담당할 책임이 있습니다. 이는 화면에 표시되는 요소들..
📖 @StateObject vs @ObservedObject vs @EnvironmentObject SwiftUI에서 데이터 흐름은 뷰들이 데이터에 의존하고, 상태 변화가 생기면 뷰를 다시 그려야 하는 것에 대한 대응 방식입니다. 이런 스타일을 "선언적" 프로그래밍이라고 합니다. 이때, 속성 선언자들은 상태 변화를 뷰에 알리고 이를 관리하기 위한 역할을 담당합니다. 이러한 기능을 구현하기 위해서 ObservableObject 프로콜이 사용됩니다. ObservableObject 프로토콜은 해당 객체에 변화가 생길 때 뷰에 알릴 수 있는 기능을 제공합니다. Wrappers(@StateObject, @ObservedObject, @EnvironmentObject) 모두 ObservableObject를 다루는 ..
📖데이터 바인딩이란? 데이터 바인딩(Data Binding)은 애플리케이션의 사용자 인터페이스(UI)와 데이터 모델 사이의 상호 작용을 자동으로 연결해 주는 기술입니다. 이를 통해 데이터 모델의 변화가 발생할 때 UI도 자동으로 업데이트되도록 합니다. 따라서 개발자는 수동으로 이벤트 리스너를 설정하거나 UI를 업데이트할 필요가 없어집니다. Key-Value Observing(KVO): 이 방식은 Foundation 프레임워크의 일부로 제공되며, 객체의 속성 변화를 감지하고 이를 다른 객체와 연결할 수 있게 해주는 기능입니다. KVO는 주로 Objective-C에서 사용되며, Swift에서는 보통 사용되지 않습니다. NotificationCenter: 이 방식은 알림(이벤트) 발송 및 수신에 관련된 기능을..

📖@State란? SwiftUI에서 @State는 프로퍼티 래퍼 중 하나로, UI의 상태를 표현하고 관리하는 데 사용됩니다. 사용자 인터랙션에 따라 일부 데이터 값은 변경될 수 있습니다. 이러한 변경이 UI에 반영되어야 할 때 @State를 사용하여 해당 데이터를 양방향으로 바인딩합니다. @State 프로퍼티 래퍼를 사용하여 구조체 내부의 값을 변경하면, SwiftUI는 변경된 상태를 감지하고 자동으로 해당 뷰를 다시 렌더링 합니다. 이를 통해 사용자에게 새로운 형태의 UI를 보여줄 수 있습니다@State를 사용하는 데이터는 주로 해당 뷰의 생명주기에 국한되며, 뷰 계층 구조에서 소유되는 뷰만이 해당 상태 접근해야 합니다. 또한, 상태값은 요청 시 신중하게 초기화되어야 합니다. import SwiftUI..

📖 MVVM 패턴이란? MVVM (Model-View-ViewModel) 디자인 패턴은 소프트웨어 개발에서 애플리케이션 구성 요소를 Model, View, ViewModel 세 부분으로 분리하는 아키텍처 패턴입니다. 이 패턴의 목적은 코드의 가독성과 재사용성을 높이며, 각 구성 요소의 책임을 명확하게 나눠 유지 보수를 용이하게 하는 것입니다. 1. Model MVVM 디자인 패턴에서 Model은 애플리케이션의 데이터 처리와 비즈니스 로직을 담당하는 구성 요소입니다. 데이터 처리: Model은 애플리케이션에서 사용되는 데이터와 관련된 모든 작업을 처리합니다. 이는 객체와 데이터 구조의 선언, 데이터베이스와의 통신, API 호출 등을 포함합니다. 비즈니스 로직: Model은 애플리케이션에서 수행되어야 하는 ..
Combine과 Async/Await 비교~ Swift는 현대적인 비동기 프로그래밍을 위한 여러 가지 기술을 제공한다. Swift의 Combine 프레임워크와 Swift 5.5에서 도입된 Async/Await 패턴은 개발자들이 비동기 작업을 처리하고 조합하는 데 사용됩니다. Combine 소개 Combine은 Swift에서 비동기 및 이벤트 기반 프로그래밍을 위한 프레임워크다. Combine은 Publisher-Subscriber 패턴을 기반으로 하며, 데이터의 흐름을 선언적으로 처리할 수 있도록 한다. Combine은 주로 데이터 스트림의 변환, 조합 및 필터링과 같은 작업에 사용된다. Combine은 비동기 작업과 이벤트 처리를 쉽게 조합할 수 있는 많은 연산자를 제공한다. 이를 통해 다양한 데이터 ..
Async/Await란?Async/await는 비동기 작업을 보다 직관적이고 동기적인 코드와 유사한 구문으로 작성할 수 있게 해주는 Swift의 기능이다. 기존의 콜백(Callback) 기반 비동기 코드와 비교하여 가독성을 향상하고 오류 처리를 간소화하는 장점이 있다.Async 함수 정의하기async 함수는 비동기 작업을 수행하는 함수다. 함수 선언 앞에 async 키워드를 붙여서 표시하고 함수 내에서 await 키워드를 사용하여 비동기 작업의 결과를 기다릴 수 있다.func fetchData() async throws -> Data { // 비동기 작업을 수행하는 코드 // 작업이 완료되면 결과를 반환하거나 오류를 던집니다. } 위의 예제에서 fetchData 함수는 비동기적으로 데이터를 가져오는 작업..
Combine이란? 1. Combine 소개 Combine은 Swift에서 비동기적이고 이벤트 기반의 프로그래밍을 위한 프레임워크다. Combine을 사용하면 데이터 스트림을 표현하고 조작할 수 있으며, 여러 비동기 작업을 조합하고 변환할 수 있다. Publisher: 데이터를 생성하고, 변환하며, 전달하는 데이터 스트림 Subscriber: Publisher로부터 전달된 이벤트나 값에 반응하여 처리하는 구독자 Operator: 데이터 스트림을 변환하고 조작하는 연산자 Scheduler: 비동기 작업을 관리하고 실행하는 실행 콘텍스트 2. 주요 개념과 활용 방법 2.1 Publisher와 Subscriber Combine에서 Publisher는 데이터 스트림을 생성하고 전달하는 역할을 한다. Subscr..
함수의 파라미터 값을 함수 내에서 변경할 수 없다. 이유: 값 타입의 불변성과 복사 전달 Swift에서 함수의 파라미터 값을 함수 내에서 변경할 수 없는 이유는 크게 두 가지 원인이 있다. 첫 번째는 값 타입의 불변성(Immutability)이고, 두 번째는 파라미터의 복사 전달(Copy-by-Value)이다. 1. 값 타입의 불변성 Swift에서 구조체(Struct)와 열거형(Enum)은 값 타입이다. 값 타입은 전달될 때마다 복사되어 독립적인 인스턴스를 생성하게 되며, 해당 인스턴스의 값을 변경할 수 없도록 설계되어 있다. 이는 값 타입이 예측 가능하고 안전한 동작을 보장하기 위한 중요한 특성이다. 따라서 함수 내에서 값 타입의 속성을 직접 변경하는 것은 원본 값을 변경하는 것이 아니라 복사본을 변경..
final Swift는 class의 상속과 overriding을 지원함. class나 method, property에 final 키워드를 붙이면 상속이나 overriding을 막을 수 있음. vtable Virtual Dispatch Table. class 내부의 method들 중 어떠한 method를 호출해야 할지 결정하는 테이블. class가 상속될 수도 있고 overriding 가능성도 있기 때문에 부모 class의 method를 참조해야 할지 하위 class의 method를 참조해야 할지 확인해야 함. 이러한 과정이 런타임 시기에 vtable을 통해 이루어짐. Dynamic Dispatch method가 overriding 되어있는 경우 실행 시점에 유동적으로 어떤 method와 property를..