Swift 74

[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..

클라이언트 2025.02.15

[Swift] Swift6의 주요 내용

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

클라이언트 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 { ..

클라이언트 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") { ..

클라이언트 2025.02.15

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

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

클라이언트 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..

클라이언트 2025.02.15

Mysteries of AutoLayout

이번 포스트에서는 WWDC 2015에 소개된 Mysteries of AutoLayout Part.2에 대한 내용을 간략하게 정리해보고자 합니다. Mystery #7. Layout Cycle Application Run Loop : Application이 계속 반복적으로 실행됩니다. Constraints Change : 제약조건에 변화가 생기면 변화된 제약조건이 적용될 때까지 Calculated Layout이 정의됩니다. Deferred Layout Pass : 위에서 언급된 레이아웃이 최종 변경될 때까지 Deferred Layout Pass가 예약됩니다. 모든 Layout Pass가 되돌아 오게 되면, 뷰의 Hierarchy를 거쳐 뷰의 모든 프레임을 업데이트하게 됩니다. Constraints Chang..

클라이언트 2021.03.01

Auto Layout을 코드로 구현해봅시다

이번 포스트에서는 Auto Layout을 코드로 구현하는 방법에 대해 알아보고 Auto Layout을 유용하게 사용할 수 있는 라이브러리인 SnapKit을 사용하여 구현하는 방법에 대해 알아보도록 하겠습니다. 1. Storyboard에서 Auto Layout을 구현하는 방법과 Code로 구현하는 방법의 차이 우리가 처음 iOS 개발을 공부하면 대부분 예제가 Storyboard를 사용하여 View를 구성합니다. 직관적이고 간편하게 마우스 컨트롤을 통해 Auto Layout을 적용할 수 있다는 점이 매력적입니다. 하지만, 장점이 있다면 단점도 존재하는 법! Storyboard로 Auto Layout을 구현하는 방법이 갖는 단점에 대해 살펴보고 코드로 구현하는 방법과 어떤 차이가 있는지 알아보도록 하겠습니다...

클라이언트 2021.02.01

[iOS] 안전한 데이터 저장, Keychain 사용하기

이번 포스트에서는 Keychain을 사용하여 안전하게 데이터를 저장하고 불러오는 방법에 대해 살펴보고자 합니다. Keychain은 디바이스 안에 암호화된 데이터 저장 공간을 의미합니다. 사용자는 암호화된 공간에 데이터를 안전하게 보관할 수 있습니다. Keychain에 저장할 수 있는 데이터는 다양한 데이터가 포함될 수 있습니다. 사용자 계정 정보를 비롯하여 결제 지불 정보, 사용자 개인 정보 등 민감한 데이터를 모두 저장할 수 있습니다. 현재까지 Keychain 영역이 외부 침입자에 의해 뚫렸다는 소식이 없었을 만큼 안전한 공간입니다. Keychain Service는 Keychain Service API를 통해 데이터를 암호화할 후 Keychain에 저장하게 됩니다. 아래 그림을 살펴보면 이해에 도움이 ..

클라이언트 2020.08.17

[iOS] Swift UI Group, View 속성 사용해보기

이번 포스트에서는 Swift UI에서 제공하는 기본적인 View 속성과 Container의 자식 View 개수 제한을 해결해보는 내용에 대해 살펴보도록 하겠습니다. Swift UI View Stack Swift UI는 VStack, HStack, ZStack이라는 3가지 Stack Layout View를 제공하고 있습니다. VStack은 수직으로 View를 배치하는 레이아웃이며 HStack은 View를 가로로 배치하는 레이아웃, ZStack은 View를 중첩이 되도록 배치하는 레이아웃을 의미합니다. 예를 들어, 다음과 같이 VStack에 3개의 Text가 있다면 세로로 3개의 View가 배치되는 것입니다. struct ContentView: View { var body: some View { VStack..

클라이언트 2020.03.28