IOS개발 8

[Swift] Mirror 타입

Swift에서 리플렉션(Reflection)은 코드가 런타임에서 자신의 속성을 검사하고 수정할 수 있도록 해주는 강력한 기능입니다. 이를 위해 Swift는 Mirror 타입을 제공하며, 이를 활용하면 객체의 프로퍼티를 탐색하고, 구조를 동적으로 이해할 수 있습니다.이 글에서는 Mirror의 개념을 설명하고, 실제 코드 예제와 함께 이를 어떻게 활용할 수 있는지 살펴보겠습니다.1. MirrorMirror는 Swift에서 객체의 메타데이터(프로퍼티, 타입 정보 등)를 추출하는 기능을 제공합니다. 다음과 같은 정보를 제공할 수 있습니다.객체의 타입프로퍼티 목록 및 각 프로퍼티의 값클래스 또는 구조체의 계층 정보Mirror의 기본 구조 2.  Mirror를 이용한 Property 검사다음은 Mirror를 사용하..

[iOS] UserDefaults 동작 방식과 보안

UserDefaults는 iOS 개발에서 간단한 데이터를 저장하고 불러오는 데 자주 사용되는 API이다. 그러나 보안상의 이슈가 있을 수 있어, 적절한 사용법과 보안 대책을 고려해야 한다. 이번 글에서는 UserDefaults의 동작 방식과 보안 관련 사항을 자세히 살펴본다.1. UserDefaults란?UserDefaults는 앱 내에서 Key-Value 형태로 데이터를 저장할 수 있는 간단한 저장소이다. 설정 값, 사용자 선호도, 앱 상태 등을 저장하는 데 주로 사용된다.1.1 주요 특징간단한 Key-Value 저장 방식앱이 삭제되기 전까지 데이터 유지앱이 재시작되더라도 데이터 유지plist 파일을 사용하여 데이터 저장보안이 강하지 않으므로 민감한 데이터 저장에 부적절1.2 지원하는 데이터 타입Use..

Frontend/iOS 2025.02.15

[iOS] 앱 성능 최적화 및 메모리 관리: ARC, 메모리 릭, Instruments 관련

모바일 앱을 개발할 때 성능 최적화와 메모리 관리는 필수적인 요소입니다. 성능이 낮거나 메모리 누수가 발생하면 앱이 느려지거나 갑자기 종료될 수 있기 때문입니다. 이번 글에서는 ARC(Automatic Reference Counting)의 개념부터 메모리 릭 탐지 방법, 그리고 Instruments를 활용한 최적화 기법까지 다루어 보겠습니다.1. ARC(Automatic Reference Counting)란?iOS에서는 메모리 관리를 자동으로 수행하는 ARC(Automatic Reference Counting)가 도입되어 있습니다. ARC는 객체가 사용되지 않을 때 자동으로 메모리를 해제하여 메모리 릭을 방지합니다.ARC의 동작 원리ARC는 객체의 Reference Count(Reference Count..

Frontend/iOS 2025.02.15

[Swift] Swift6의 주요 내용

Swift6는 Swift 언어의 최신 버전으로, 성능 향상과 개발자 경험 개선을 목표로 많은 변화가 포함되어 있다.이번 글에서는 Swift6의 주요 변경 사항과 새로운 기능에 대해 살펴본다.1. 동시성(Concurrency) 모델 개선Swift 5.5부터 도입된 async/await 및 actor 모델이 Swift6에서 더욱 강화되었다. 특히, 동시성 관련 코드의 안정성을 높이기 위해 다음과 같은 개선이 이루어졌다.Strict Concurrency Checking: 동시성 관련 오류를 컴파일 타임에서 더욱 정확하게 감지할 수 있도록 개선됨.Actor 강화: actor 간의 메시지 전달 방식이 최적화되어 성능이 향상됨.Isolation 모델 개선: 동시성 안전성을 높이기 위해 기존의 전역 상태 접근을 더욱..

Frontend/iOS 2025.02.15

[Swift] Swift Concurrency 개념과 사용법 간단 정리

Swift 5.5부터 도입된 Swift Concurrency는 기존 GCD나 Combine을 대체하며, 비동기 프로그래밍을 더 직관적이고 안전하게 만들었습니다. 이 글에서는 Swift Concurrency의 핵심 개념과 사용법을 간단하게 정리합니다.1. Swift Concurrency 개요Swift Concurrency는 async/await, Task, actor 등을 통해 동시성 프로그래밍을 단순화하는 기능입니다. 이를 사용하면 콜백 지옥을 방지하고, 가독성이 높은 코드를 작성할 수 있습니다. 기존의 GCD를 사용한 코드 예제:DispatchQueue.global().async { fetchData { result in DispatchQueue.main.async { ..

Frontend/iOS 2025.02.15

[SwiftUI] SwiftUI 성능 최적화: View Rendering을 줄이는 방법

SwiftUI는 선언형 UI 프레임워크로, 자동으로 UI를 업데이트해주는 장점이 있지만,성능을 고려하지 않으면 불필요한 Re-Rendering이 발생할 수 있습니다.이번 글에서는 SwiftUI의 성능을 최적화하는 5가지 방법을 소개합니다.1. @State의 과도한 사용 줄이기잘못된 예제@State가 변경될 때마다 전체 body가 다시 평가되므로 성능 저하가 발생할 수 있습니다.struct CounterView: View { @State private var count = 0 var body: some View { VStack { Text("Count: \(count)") Button("Increment") { ..

Frontend/iOS 2025.02.15

[SwiftUI] SwiftUI View 렌더링 순서 관련 정리

SwiftUI는 선언형(Declarative) 방식의 UI 프레임워크로, UIKit과 다르게 데이터 변경에 따라 뷰가 자동으로 업데이트됩니다.하지만 SwiftUI의 뷰 렌더링 순서를 명확하게 이해하지 않으면 예측하지 못한 동작이 발생할 수 있습니다.이번 글에서는 SwiftUI의 뷰 렌더링 과정과 호출되는 순서를 정리해 보겠습니다.1. SwiftUI 뷰 렌더링 과정 개요SwiftUI의 뷰는 다음과 같은 과정으로 렌더링됩니다.뷰 구조체(Struct) 인스턴스화: View 프로토콜을 준수하는 구조체가 생성됩니다.body 프로퍼티 평가: body가 호출되어 SwiftUI 뷰 트리가 구성됩니다.뷰 업데이트 감지: @State, @Binding, @ObservedObject, @EnvironmentObject 등의..

Frontend/iOS 2025.02.15

[SwiftUI] SDWebImage SwiftUI로 WebP 이미지 보여주기

SwiftUI에서는 기본적으로 WebP 형식의 이미지를 지원하지 않지만,SDWebImageSwiftUI 라이브러리를 사용하면 WebP 이미지를 쉽게 로드할 수 있습니다. 이 글에서는 SDWebImageSwiftUI를 활용하여 SwiftUI에서 WebP 이미지를 표시하는 방법을 정리하겠습니다.1. SDWebImageSwiftUI란?SDWebImageSwiftUI는 SDWebImage의 SwiftUI 버전으로, 네트워크 이미지 로딩 및 캐싱을 쉽게 처리할 수 있도록 도와줍니다. WebP, GIF 등의 애니메이션 이미지도 지원하며, SwiftUI의 View와 자연스럽게 결합할 수 있습니다.2. 프로젝트에 SDWebImageSwiftUI 추가하기Swift Package Manager(SPM)를 이용하여 SDWe..

Frontend/iOS 2025.02.15