본문 바로가기

# 02/iOS

[iOS] Combine vs RxSwift 정리: iOS 리액티브 프로그래밍 흐름 한눈에 보기 Swift에서 비동기 데이터 흐름을 다룰 때 사용하는 대표적인 리액티브 프레임워크는 Combine과 RxSwift입니다.이 글에서는 Combine의 핵심 구성 요소와 데이터 흐름을 먼저 요약하고, RxSwift와의 차이점도 함께 정리해볼게요. 🔁 Combine의 데이터 흐름 구조@Published var value: Int = 0$viewModel.value .map { "\($0)" } .sink { print("값: \($0)") } .store(in: &cancellables) Combine에서는 다음과 같은 흐름으로 데이터가 전달됩니다: 순서역할설명1@Published속성 값의 변경을 감지 가능한 Publisher로 전환2Publisher값이 시간에 따라 방출됨3Operatormap..
[iOS] iOS GCD 핵심 요약 ✅ sync vs async 항목syncasync실행 방식동기 (기다림)비동기 (즉시 다음 코드 진행)스레드 생성❌ 없음✅ 가능 (큐에 따라)블로킹✅ Blocking❌ Non-blocking예시queue.sync {}queue.async {} ✅ Serial vs Concurrent Queue 항목Serial QueueConcurrent Queue실행 방식순서대로 하나씩병렬로 여러 개 동시에순서 보장✅ 보장❌ 보장 안됨대표 예시DispatchQueue(label:)DispatchQueue.global() ❌ Deadlock 예시 (피해야 할 패턴) DispatchQueue.main.sync { DispatchQueue.main.sync { print("이 코드는 deadlock 발생") }}..
[iOS] GCD란? ✅ GCD란?**GCD (Grand Central Dispatch)**는 iOS와 macOS에서멀티스레드 작업을 쉽고 효율적으로 처리하기 위해 Apple이 만든 API 🧠 왜 쓰는가?앱이 UI를 멈추지 않고 백그라운드에서 작업할 수 있도록 하기 위해복잡한 Thread 직접 생성 없이, 작업을 큐에 넣는 것만으로 병렬 처리 가능 🔧 대표 사용법DispatchQueue.global().async { // 백그라운드 작업 let data = loadImage() DispatchQueue.main.async { // UI 업데이트는 메인 스레드 imageView.image = data }} 🧱 구성 요소 요소설명DispatchQueue작업을 실행할 큐 (main, global ..
[iOS] iOS에서 strong, weak, unowned의 차이점 iOS는 ARC(Automatic Reference Counting) 기반 메모리 관리를 사용합니다.객체 간 참조가 순환될 경우 메모리 누수가 발생할 수 있어서,strong, weak, unowned를 적절히 사용해 순환 참조를 방지해야 합니다. strong은 기본 참조 방식으로, 참조 횟수를 증가시켜 객체 생존을 유지합니다. 대부분의 경우에 사용되며, 순환 참조가 없을 때 적절합니다.weak은 참조는 하지만 참조 카운트를 증가시키지 않고, 객체가 해제되면 자동으로 nil이 됩니다. 주로 delegate 패턴에서 사용되며, 선언 대상이 옵셔널이어야 합니다.unowned도 참조 카운트를 증가시키지 않지만, nil이 되지 않는다고 보장되는 관계에 사용합니다. 예를 들어, 클로저 내부에서 self를 캡처할 때..
[iOS] Xcode Instruments Xcode의 Instruments는 앱이 렉 걸리거나 메모리 누수 의심될 때, FPS 떨어질 때 사용할 수 있는 개발 툴이다. Time Profiler (CPU 사용량 분석)Allocations (메모리 사용량 추적)Leaks (메모리 누수 감지)Core Animation (FPS, 레이어 렌더링 시간 확인)Network, Energy, System Trace 등 이 있다. Xcode > Open Developer Tool > Instruments Activity Monitor 선택 + Instrument 클릭해서 추가 가능 (Core Animation FPS 검색) 추가 된 모습 왼쪽 상단의 빨간 재생버튼 클릭
[iOS] Tuist 보호되어 있는 글입니다.
[iOS] Geofence CoreLocation 프레임워크를 사용하여 지리적 좌표와 미터 단위의 반경을 사용하여 위치를 정의하고 사용자가 해당 위치에 들어가거나 나간 경우를 확인할 수 있습니다. 앱에서 위치 권한을 항상 허용으로 설정하면 앱이 종료된 상태에서도 확인이 가능합니다.(앱을 사용하는 동안 허용 으로 하면 앱이 실행 중인 경우에만 확인할 수 있습니다.) https://www.adictosaltrabajo.com/2017/08/16/geofences-en-ios-swift/ Geofences en iOS (Swift) - Adictos al trabajo Tutorial en el que se explica cómo crear geofences en iOS. Índice de contenidos Introducción E..
[iOS] 라이브러리 사용! iOS 에서 외부 라이브러리를 사용하기 위해서는 일단! cocoapods 가 설치 되야 한다! https://cocoapods.org/ CocoaPods.org CocoaPods is built with Ruby and is installable with the default Ruby available on macOS. We recommend you use the default ruby. Using the default Ruby install can require you to use sudo when installing gems. Further installation instructions are in the g cocoapods.org $ sudo gem install cocoapods 위의 코드로 c..