swift
-
TCA Tutorial 1, 2 - 상태관리와 비동기 처리 TCAswift 2025. 5. 14. 15:33
앱 개발의 사이즈가 커질때마다 상태 관리의 중요성을 실감하고 있습니다. 간단한 UI 상태만 다룰 때는 문제가 없지만, 입력 -> API 호출 -> 화면 전환 등 다양한 이벤트가 얽히면서 복잡도가 높아지기 시작하면 이게 어떤 코드였지 ? 하는 생각이 많아지는 것 같습니다. 이런 상황이 쌓이면 유지보수도 힘들어지고 앱의 데이터 흐름을 파악하기 어려워지죠.이런 문제를 해결하기 위해 UIKit 에서는 RxSwift를 SwiftUI 에서는 TCA가 자주 활용됩니다. 물론 채용 공고에서도 많은 비중을 차지하고 있죠. 이번 TCA 글에서는 TCA의 기본 튜토리얼을 따르며 왜 이렇게 최근 앱 개발환경에서 많이 사용하는지 개인적인 시선으로 풀어보려 합니다. 단방향 데이터 흐름 TCA는 단방향 데이터 흐름을 철저하게 지킵..
-
메모리 릭 방지 weak 가 정답일까 ? - WWDC ARC 2swift 2025. 5. 7. 01:12
지난 글 에선 ARC 의 기초 개념과 메모리 릭, 객체의 수명에 대해서 참조 카운트가 연산되는 과정을 다루었습니다. 이번 글 에선 단순히 Observed Lifetime 에 의존하는 안되는 이유에 대해서 알아보고 메모리 릭을 방지하는 방법에 대해서 알아보겠습니다. 2025.05.07 - [swift] - 보이는 객체 수명에 속지 말기 ! - WWDC ARCObserved Lifetime 에 의존할 시 생길 버그class Traveler { var name: String var account: Account?}class Account { weak var traveler: Traveler? var points: Int func printSummary() { print(..
-
보이는 객체 수명에 속지 말기 ! - WWDC ARC 1swift 2025. 5. 7. 00:57
WWDC21 - ARC Swift Swift 에서는 class 보단 struct, 즉 값 타입을 우선적으로 사용하라고 합니다. 저 역시 class는 데이터가 여기저기서 접근되기 쉬워서 조심히 사용해야한다. 정도의 개념으로만 이해하고 struct를 사용해왔는데요. 문득👉데이터의 참조 타입은 언제 위험해지는 걸까 ? 이 의문에 파고드니 이를 이해하려면 ARC(Automatic Reference Counting) 을 정확히 이해야한다는 것을 알게되었습니다. 그렇게 지금까진 그저 넘겼던 참조타입이 왜 위험한지, ARC 중심으로 WWDC 의 ARC를 해석하며 알아보겠습니다. Swift의 class는 참조 타입이며, 메모리는 ARC로 관리된다. 값 타입(Struct, enum)을 우선 사용하고, 참조타입..
-
StackView를 통한 iOS 스토리보드 레이아웃swift 2023. 8. 25. 22:59
레이아웃을 구성하는 데에는 많은 방법이 있습니다. 상 하 좌 우 공백 값을 설정해서 view 를 배치하는 방법도 있고, stackView를 통해서 구현하는 방법도 있는데요. 저는 stackView를 사용하여 편리하게 View를 구성하는 방법을 알려드리려 합니다. 우선 stackView는 다음과 같은 이점을 제공합니다. 유연한 레이아웃 : stackView 는 자동으로 크기를 조정하기에 다양한 디바이스에 대응하는 레이아웃을 구성하는데 도움이 됩니다. 자동 정렬 : 내부의 요소들을 사용자의 설정에 따라 수직 or 수평으로 정렬해줍니다. 요소를 추가하거나 제거하면 자동으로 정렬을 업데이트 합니다. 간격 설정 : 내부의 요소들 끼리 간격을 쉽게 조정할 수 있습니다. 중첩 가능 : 스택뷰 안에 다른 스택뷰를 넣어..
-
다중 스레드와 동기화: 성능과 안정성을 위한 최적의 방법swift 2023. 5. 21. 16:17
Thread Thread의 정의스레드는 동시성 프로그래밍을 구현하는데 사용 . 다중 스레드 프로그래밍을 통해 여러 작업을 동시에 실행하고 병렬처리를 통해 시간을 절약하거나 성능을 향상 시킬 수 있다. 프로세스 내에서 실행되는 독립적인 실행 단위 . 각각의 스레드는 프로세스의 주소 공간을 공유하면서 동시에 실행될 수 있다. 다양한 작업을 병렬또는 동시에 처리하기 위해 사용됨. Thread의 종류 Main Thread : 프로그램이 시작될 때 생성되는 기본 스레드. UI 처리하고 앱의 주요 동작 담당 Background Thread : 메인 스레드 이외의 스레드로 주로, 비동기 작업이나 병렬처리를 위해 사용 보통 오래걸리는 작업이나, 네트워크 요청 등을 처리할 때 유용 Dispatch Queue Thread..
-
[Swift-UIkit] 명상 컨텐츠 리스트 - UICollectionView을 활용한 명상 컨텐츠 목록 구현 방법 , 버튼 클릭시 타이틀 변경 , 셀에 곡선swift 2023. 5. 20. 00:35
명상 컨텐츠 리스트 구현해야 하는 기능 collectionview 를 통해서 스크롤이 가능하게 제작 셀에 따라서 높이가 달라지게 버튼 tap 시에 추천 리스트 변경 file 리스트 및 그리드를 만들기 위해서는 크게 3가지 작업이 필요하다. 1. Presentation : 데이터를 어떻게 표현 ? UI를 구성하는 부분으로, 화면에 표시되는 내용과 사용자의 상호작용을 관리 UI 컴포넌트, 이벤츠 처리, 화면 전환 등을 담당한다. 사용자에게 보여지는 부분을 담당한다. var datasource = UICollectionViewDiffableDataSource ! datasource 에 대한 선언을 해준다. UICollectionViewDiffableDataSource 를 이용해 데이터 소스를 설정하기 위함. ..
-
UICollectionView를 활용한 데이터 표현과 레이아웃 구성swift 2023. 5. 19. 16:21
UICollectionView 활용하기 ❗️UITableView 여러 데이터를 싱글 컬럼으로 나열해서 표현해주는 뷰 ❗️UICollectionView 여러 데이터를 여러 컬럼 또는 레이아웃 커스터마이징해서 표현해주는 뷰 (예: 그리드뷰) 🤔 UITableview vs. UICollectionView UICollectionView 가 자유도가 높고, UITableView 로 표현할수 있는 것도 커버가 가능함 구현 난이도가 두개의 차이가 많이 있지 않음 따라서, 하나만 배워 놓으면 다른 하나 배우는 것은 쉬움 💡 UICollectionView 개념 UICollectionView를 이용해서 리스트 및 그리드를 개발할때는 3가지만 고민하면 됩니다. Data / Presentation / Layout Data -..
-
cocoapods 설치, rvm 설치로 cocoapods 설치, podfile 생성과 수정, JSON 파일 추가,Lottie 애니메이션 뷰 추가,JSON 파일 로드 및 애니메이션 적용swift 2023. 5. 5. 13:26
cocoapods 설치하기 sudo gem install cocoapods 터미널에서 위 명령어로 cocoapods 을 설치. 이 방법이 적용이 되지 않는다면 ? \curl -sSL [https://get.rvm.io](https://get.rvm.io/) | bash -s stable\n source ~/.rvm/scripts/rvm\n rvm install ruby --latest\n rvm use ruby gem install cocoapods 위와 같이 rvm 을 새로 설치해주어 cocoapods을 설치해준다. 그리고 cocoapods을 적용할 프로젝트의 파일에서 다음 명령어를 실행해준다. pod init 그럼 Podfile 이 생성되는데, 이때 vim 을 이용해서 문구를 추가해도 되고 직접 텍스..