DispatchQueue
작업을 비동기적으로 실행할 수 있는 GCD(Grand Central Dispatch) 큐. 멀티쓰레딩이 가능하도록 도와줌. DispatchQueue의 역할 비동기적으로 실행하게 하여 UI가 멈추지 않도록 한다. 백그라운드에서 실행하여 CPU 리소스를 최적화 해준다. 우선순위(QOS)를 설정하여 중요한 작업을 빠르게 처리한다. 1....
작업을 비동기적으로 실행할 수 있는 GCD(Grand Central Dispatch) 큐. 멀티쓰레딩이 가능하도록 도와줌. DispatchQueue의 역할 비동기적으로 실행하게 하여 UI가 멈추지 않도록 한다. 백그라운드에서 실행하여 CPU 리소스를 최적화 해준다. 우선순위(QOS)를 설정하여 중요한 작업을 빠르게 처리한다. 1....
MVVM 아키텍처란? iOS 개발자가 알아야 할 구조와 실제 적용법 MVVM이란? MVVM은 Model-View-ViewModel의 약자로, UI 코드와 비즈니스 로직을 분리하는 아키텍처 패턴이다. Model: 데이터 구조, 비즈니스 로직, 네트워크 요청 등 실제 동작을 담당한다. View: 화면(UI)만 담당한다. 뷰의 생명주기와 사용...
아래는 Swift의 클로저 값 캡처, 메모리 누수 디버깅, 그리고 SwiftUI에서의 클로저 캡처까지 모두 포함한 실전 중심의 정리다. 복붙 가능한 마크다운 형식이다. Swift 클로저의 값 캡처(Value Capture)와 메모리 누수, SwiftUI에서의 캡처 정리 1. 값 캡처란? Swift에서 클로저는 정의 당시 주변 변수의 값을 캡처...
Modifier의 기본 구조 SwiftUI의 Modifier는 View에 스타일이나 동작을 연속해서 적용할 수 있도록 구성되어 있다. 내부적으로는 메서드 체이닝 구조이며, self를 반환하기 때문에 다음 Modifier를 계속 이어 붙일 수 있다. Text("Hello") .font(.title) .foregroundColor(.re...
PublishSubject란 이벤트가 발생하면 데이터를 구독자들에게 전달하는 역할이다 .onNext(())가 호출될때마다 구독자에게 데이터가 전달된다.(이벤트가 방출된다.) let buttonClickPublishSubject = PublishSubject<Void>() // ✅ 이벤트가 방출되면 구독자가 반응함 button...
Dispose는 Observable과 구독간의 연결을 끊는 역할을 한다. 예제 코드 (개별 dispose) let observable = Observable.of("A", "B", "C") let disposable = observable.subscribe { event in print(event) } // ✅ 수동으로 구독 해제...
비동기 흐름을 다루는 핵심 개념, Observable이란? 앱 개발을 하다 보면 버튼 클릭, 네트워크 응답, 텍스트 필드 변경 등 다양한 비동기 이벤트를 다뤄야 한다. 이럴 때 단순한 콜백 방식은 코드 흐름을 이해하기 어렵게 만들 수 있다. 이를 해결하기 위해 등장한 개념이 바로 Observable이다. Observable은 무엇인가? Obser...
UIKit에서 버튼, 제스처, 타이머 등의 이벤트가 발생했을때 특정 메서드를 실행하는 방식이다. 주로 UIButton, UIControl, UITapGestureRecognizer 같은 UI 요소에서 사용된다. 🚧 기본 구조 button.addTarget(self, action: #selector(methodName(_:)), for: .touc...
Combine 공부중 버튼 클릭 이벤트 처리 코드 정리 🍭 전체 코드 let subscriptions = Set<AnyCancellable>() let navToNumberBtn = UIButton() navToNumbersBtn .tapPublisher .sink(receiveVa...
여러 데이터들을 리스트처럼 스크롤할 수 있게 나타내는 뷰이다. 그렇기 때문에 ScrollView를 상속받는다. 많은 데이터를 나타낼때 모든 데이터를 메모리에 올리지 않고 화면에 나타나는 데이터들만 메모리에 올라가기때문에 메모리 관리에 용이하다. 1. 사용 예제 테이블뷰가 있는 뷰와 뷰컨트롤러를 연결시킨다. 테이블뷰에 필요한 클래스, 프로...