IOS 11

TCA - 네트워크 요청하기

안녕하세요! 미니입니다. 오늘은 TCA에서 네트워크를 처리하는 방법에 대해서 정리해보려고 합니다. TCA를 알아보면서 사이드 이팩트에 대해서 이야기하면서 잠시 이야기 했었습니다. (안보신 분들은 TCA - 기본 에서 보시면 됩니다.) 사이드 이팩트에 대해서 잠깐 이야기 해보고 넘어가보도록 하죠! 사이드 이팩트 TCA에서 사이드 이팩트라는 용어는 어플리케이션 바깥 세상에서 일어나는 일이다. 링크 TCA 공식 문서를 바탕으로 사이드 이팩트에 대한 정의를 추론해보면 저희가 작성하고 있는 어플리케이션 바깥 세상에 대해서 이야기합니다. 즉, 네트워크를 통해서 새로운 데이터를 받아오는 작업도 사이드 이팩트가 됩니다. 직접 코드를 작성하기 전에 어떤 형식의 앱인지 소개드릴게요! 우측 네비게이션 바에 있는 버튼들은 상..

IOS/SwiftUI 2023.10.18

Swift Concurrency (2) - Behind Scene

안녕하세요! 미니입니다. 오늘은 Swift Concurrency를 사용하면서 생긴 궁금증에 대해서 학습한 내용을 공유하려고 합니다. Swift Concurrency의 기본적인 내용은 해당포스팅 에서 확인할 수 있습니다. 저희는 비동기 프로그래밍을 활용하기 위해서 GCD를 많이 활용해왔습니다. 하지만, Swift 팀은 구조화된 Concurrency와 비슷하게 구현하게 되었습니다. 그렇다는건 GCD의 문제점들이 있다는 뜻이겠죠? 그리고 또한, Swift Concurrency는 내부적으로 어떻게 동작하는지에 대해서 알아보았습니다. (해당 내용은 Swift concurrency: Behind the scenes을 기반으로 작성되었습니다.) 저희가 저번에 등장 배경에서 언어적으로 다양한 문제들이 발생한다고 했습니..

IOS/Swift 2023.10.13

TCA - What is ViewStore

안녕하세요! 미니입니다. 이번에는 TCA로 프로젝트를 진행하면서 학습한 내용을 정리해보려고 합니다. 많은 것을 정리하는 것은 아니고, 개념적인 내용에 대해서 설명하려고 합니다. TCA를 조금 써보면 ViewStore라는 친구를 바로 만나게 되는데 내부적으로 어떤 동작이 일어나는 지 궁금해져서 학습한 내용을 공유해보려고 합니다. 우선 공식 문서 부터 조져보자구욧! ViewStore는 상태의 변화와 액션 발생에 대해서 관찰할 수 있는 객체이다. 일반적으로 SwiftUI의 뷰나 UIView, UIViewController 타입에서 사용할 수 있다. 하지만, 상태를 관찰하고 액션을 전달하는 것이 적합한 곳이면 어디든 사용할 수 있다. 상태를 관찰할 수 있다는 말에서 Combine과 SwiftUI에서 많이 보던 ..

IOS/SwiftUI 2023.10.08

Swift Concurrency 맛보기 & 맛 평가

안녕하세요! 미니입니다. 오늘은 프로젝트에서 Swift Concurrency에 대해서 정리해보고, 적용 후기를 작성해보려고 합니다. 첫번째로 비동기 프로그래밍에 대해서 먼저 생각해보려고 합니다. 비동기 프로그래밍? 동기 동기 프로그래밍은 하나의 작업이 종료될 때까지 프로그램이 기다리는 것을 의미합니다. 즉, 하나의 작업이 종료되어야지만 다음 작업을 할 수 있다는 의미입니다. 비동기 하지만, 비동기는 하나의 작업이 실행되고 나면, 다른 작업을 바로 수행하는 것을 의미합니다. 즉, 진행중인 작업에 대해서 기다리지 않습니다. 이때, 저희는 작업이 종료되는 시점을 알기 위해서 클로저를 활용하게 됩니다. 실제로, URLSession의 dataTask 메서드는 (error, response, data) 타입을 반환..

IOS/Swift 2023.10.04

TCA 기본

안녕하세요! 미니입니다. TCA를 학습한 후, 실제 프로젝트에 적용한 경험을 공유하기 위해서 글을 쓰게 됩니다. TCA 아키텍처와 관련된 포스팅을 시리즈로 작성할 예정입니다! 오늘은 TCA가 무엇이고, 왜 핫한지에 대해서 이야기해보려고 합니다. (핫한 이유가 무엇인지..!) TCA란? TCA는 일관되고 이해할 수 있는 방법으로 어플리케이션을 제작하기 위해 탄생한 라이브러리입니다. 이 라이브러리는 다양한 목적과 복잡도를 가진 어플리케이션을 만들기 위해 필요한 핵심 도구를 제공합니다. TCA는 SwiftUI, UIKit을 모두 지원하며, 다양한 플랫폼에서 사용이 가능합니다. Composable Architecture는 Elm이나 Redux 같은 다른 라이브러리들의 아이디어를 차용했다고 합니다. 그렇다면, R..

IOS/SwiftUI 2023.09.26

[iOS] MVVM에 대한 고찰

안녕하세요! 미니입니다. 프로젝트를 하면서 MVVM에 대해서 고민했던 부분들을 정리해보려고 합니다. 저도 학습을 하고, 생각을 정리하는 글이다 보니 틀린 부분이 있을 수 있습니다. ㅜㅜ (댓글 달아주시면 발전하겠습니다!!) 왜 MVVM 써야 하는뎅..? 전통적으로 Apple에서 정의한 MVC를 Massive View Controller라고 놀리곤합니다. 근데, 저는 Massive하다는 것이 어느정도 커져야지 그런 거지?라는 생각과 함께 좀 고민을 해야 할 표현이라고 생각했습니다. 실제 개발을 하면서 ViewController가 커지는 경우가 있기는 한데, MVVM으로 변경하는 적절한 이유라고는 생각하지 못했습니다. 이런 이유들보다는 View와 비즈니스 로직을 분리하고 객체들에게 명확한 책임을 주게 하기 ..

IOS/UIKit 2023.09.12

[iOS] 상단 탭바 구성하기

안녕하세요! 미니입니다. 오늘은 UI와 관련되서 글을 작성해보려고 합니다. 프로젝트를 진행하면서 상단에 탭바와 같은 UI를 구성하면서 고민한 점들과 구성 방법에 대해서 공유해보려고 합니다. 오늘 구성할 화면이며, 상단에는 하단 탭바처럼 버튼을 누를때마다 화면이 전환되도록 구성됩니다. 1. 탭 구성하기 우선, 처음으로 상단에 표시할 텍스트와 화면에 대해서 정의할 수 있는 타입을 구성할 겁니다. 또한, 화면의 구성을 일반화하기 위해서 protocol을 선언해서 구성하였습니다. 2. 상단 탭바 구성하기 그 후, 상단 커스텀한 상단 탭바를 구성합니다. 상단 탭바는 StackView를 상속하고 있으며, TabItem 을 채택하고 있는 타입들의 배열을 받을 수 있도록 구성합니다. 그리고, 상단 탭바의 화면을 구성해..

IOS/UIKit 2023.09.11

이미지 캐싱 라이브러리 비교

이미지 라이브러리 비교 분석 안녕하세요! 미니입니다. 오랜만에 글을 작성하게 되었네요 ㅜㅜ 오늘은 프로젝트를 수행하면서 비교하게 된 iOS 이미지 캐싱 라이브러리들에 대해서 비교해보려고 합니다. 비교를 하기전에 Cache라는 것이 무엇이고, 왜 쓰는지에 대해서 고민을 해 볼 필요가 있습니다. Cache 캐시 : 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간없이 더 빠른 속도로 데이터에 접근할 수 있다. 출처 : 위키 백과 (https://ko.wikipedia.org/wiki/캐시) 위에 있는 정의는 ..

IOS/UIKit 2023.09.07

Data Flow Through SwiftUI

저번 포스트에서 SwiftUI 의 뷰 구성에 대해서 알아보았습니다. 이와 함께 보면 좋을 WWDC 영상이 있어서 보면서 느낀점과 함께 내용을 정리해보려고 합니다. ‼️ WWDC 영상을 보면서 해석을 한 부분이 많기 때문에 틀린 부분이 있을 수 있습니다. SwiftUI의 데이터 SwiftUI 는 데이터를 일급 시민으로 보고 있습니다. 데이터의 일반적인 의미인 컴퓨터가 처리할 수 있는 정보 라는 의미보다는 UI를 그릴 수 있는 모든 정보라는 의미로 이야기를 합니다. 다양한 형태의 값을 가지고 있으며, 이들은 모두 데이터가 될 수 있습니다. 예를 들어서 버튼의 누름의 상태와 같은 것들도 데이터가 될 수 있다고 합니다. SwiftUI의 데이터 원칙 1. 뷰에서 데이터를 읽으면 뷰에 대한 종속성이 발생한다. 저희..

IOS/SwiftUI 2023.09.07

Combine (2)

지난 시리즈에 이어서 Combine을 공부해보려고 한다. 이전 시간에는 Publisher, Operators, Subscriber의 어떤 역할들을 하는지에 대해서 공부했다. 이번에는 Publisher와 Subscriber의 종류에 대해서 공부해보려고 한다. Publisher 지난 시간에 공부했던 것을 생각해보면 Publisher는 시간의 흐름에 따라서 변경된 데이터를 방출하고, 종료되는 시점을 알려준다고 하였다. 이런 점에서 우리는 이미 비슷한 친구들을 보았을 것이다. 바로 NotificationCenter, KVO라는 친구들이다. 이 친구들은 Publisher처럼 값이 변경될 때마다 비동기적으로 이벤트를 받았다. 하지만, 엄밀히 말하면, NotificationCenter는 내부적으로 Publisher ..

IOS/Swift 2023.09.07