iOS (53) 썸네일형 리스트형 [Swift] Modern Concurrency Swift ( 2편 - GCD와 Operation의 특징과 문제점 요약 ) [Swift] Modern Concurrency Swift ( 1편 - Thread Class로 Thread 문제 파헤치기 ) Dispatch : Grand Central Dispatch(GCD) Grand Central Dispatch(GCD)로 알려진 Dispatch 프레임워크는, 시스템에 의해 관리되는 dispatch queues에 작업을 제출하여 멀티코어 하드웨어에서 동시성 작업을 수행하도록 하는 프레임워크입니다. C에 존재하는 libdispath library의 apple implments이며, 다음에 설명할 Operation Queue도 GCD의 위에서 구현되었습니다. GCD가 다루는 모든 작업들은 GCD가 관리하는 FIFO(First in First Out) Queues에 의해 배치됩니다. .. [Swift] Modern Concurrency Swift ( 1편 - Thread Class로 Thread 문제 파헤치기 ) Swift Concurrency, 그리고 기존의 GCD, OperationQueue 동시성(Concurrency) 프로그래밍이란 여러 작업을 동시에 여러 스레드에서 처리하는 프로그래밍 방식을 뜻합니다. iOS 개발에서 Concurrency는 어플리케이션의 성능 향상 및 UX 향상에 큰 도움을 주며 없어서는 안될 부분입니다. 기존에는 GCD, OperationQueue를 이용하여 이러한 목표를 이룰 수 있었습니다. WWDC 2021에 소개된 Modern Concurrency Swift, Swift Concurrency는 컴파일 타임에 Thread-Safe한 코드를 작성할 수 있도록 도와주고, 특정 상황에 Thread가 멈추지 않고 다른 작업에 할당될 수 있도록 합니다. Swift Concurrency를 본.. [SwiftUI] TCA(The Composable Architecture) 아키텍쳐 알아보기 ( 1편 - TCA, ReducerProtocol) 최근 SwiftUI로 새로운 프로젝트를 진행할 일이 생겨 SwiftUI의 아키텍쳐 패러다임에 대해 공부했고, 프로젝트에 적용중입니다. 링크에 SwiftUI의 MVVM에 대한 견해가 담긴 글이 있습니다. UIKit에서는 MVVM을 많이 이용했지만, SwiftUI의 단방향 Data Flow와 선언형 UI가 주는 장점을 이용하기 위해 TCA를 채택했습니다. 각설하고, SwiftUI의 아키텍쳐 중의 하나인 Pointfreeco의 TCA(the composable architecture)에 대해 정리해 보겠습니다. 본문은 TCA API Document와 TCA Readme 한국어 번역을 참고하여 작성했음을 알려드립니다. TCA(The Composable Architecture)란? - TCA는 일관되고 이해할 수.. [Swift] Apple의 Swift 언어에 Contribute하기 (Feat. chatGPT) 얼마 전 medium에서 스위프트 언어에 기여한 경험 이라는 글을 봤습니다. 개발 실력이나 경력과 관계 없이 적극적인 자세로 contribute하는 자세가 멋있어 보여서, '나도 한번 해 볼까?'라는 충동과 함께 typo 정도라면 수정해서 올릴 수 있을거라는 생각이 들었습니다. 그리고 당장 apple의 repo들을 뒤지기 시작했습니다. 결과는 성공! contribute의 과정을 적어나가 보겠습니다. Apple의 Swift 언어에 Contribute한 과정 1. Apple의 Repo를 돌아보며 typo를 찾기가 쉬울지 판단해보기 우선 typo 찾기가 어렵다면 당장 급한 일은 아니니 개발 공부를 하며 천천히 찾아볼 생각이었습니다. apple의 repo 중 변화가 활발해보이는 것을 고른 다음, github1s.. [SwiftUI 기초] @Environment, Environment Values로 View의 계층적인 환경 관리하기 Environment values Share data throughout a view hierarchy using the enviroment. 스위프트UI의 View들은 Environment 프로퍼티 래퍼를 통해서 환경으로부터 읽은 confiugration 정보에 반응하여 스스로의 UI를 구성할 수 있다. 이러한 environement 정보는 Container로부터 계층적으로 내려가서 하위 View들에게 전해진다. 따라서 Envrionment values를 이용하면 전체적인 뷰 계층의 환경을 조정할 수 있다. @Environment A property wrapper that reads a value from a view’s environment @frozen @propertyWrapper struct E.. [SwiftUI 기초] SwiftUI 맛보기 목표 Xcode Canavas를 이용해서 코드와 UI를 동시에 보며 작업하는 방법 알아보기 재사용 가능한 뷰 만드는 방법 알아보기 @State 키워드에 대해 알아보기 Alert 띄우기 내용 1. App Protocol을 따르는 struct를 정의하여 App을 시작할 수 있다. @main struct RGBullsEyeApp: App { var body: some Scene { WindowGroup { ContentView(guess: RGB()) } } } App Protocol의 기본적인 구조는 아래와 같다. 연관 타입으로 Scene을 정의해주고, body를 구현하면 된다. @SceneBuilder와 같은 어트리뷰트는 추후에 공부해보자. 위의 코드를 보면 WindowGroup을 통해 시작할 Window.. [If kakao 후기] 카카오뱅크 iOS 프로젝트의 모듈화 여정: Tuist를 활용한 모듈 아키텍처 설계 사례 본문 내용은 모두 if kakao에서 진행된 세션을 바탕으로 정리되었고, 사진 자료 또한 발표 자료에서 가져왔음을 밝힙니다. https://if.kakao.com/2022/session/88 아키텍쳐 알아보기 1. MVVM의 데이터 바인딩을 이용하여 모델과 UI 간의 동기화 - > 비대해지는 viewModel - > Routing이 정형화되어 있지 않음 2. 2019년에 MVVM => RIBs로 전환함 RIBS는 템플릿을 제공하여 일관성 있는 코딩을 하게 해주고, 프로토콜 지향 프로그래밍으로 테스트 코드가 가능하다. 응집도 높은 코드와 Routing 기능이 된다. 단점은 기능 단위로 많은 파일이 생성된다는 점이 있다. 모듈화의 필요성 2020년 8월 31일 기준 11,000개 파일에 104만줄의 코드가 .. [Tuist 3.12.0] Tuist 및 Local Swift Package를 이용해 Platform 간 Source code 공유하기 Tuist 및 Local Swift Package를 이용해 Platform 간 Source code 공유하기 문제 Tuist Modular Architecture로 구현된 프로젝트에서 Core와 Domain의 요소들을 app과 watchApp 사이에 공유하고자 했습니다. Core와 Domain 모듈은 dynamic framework로 구현되어 있는 상황인데, tuist의 manifest를 통해 framework를 생성하면 platform이 specific하게 고정되어 버립니다. 시도1 : Swift Package는 소스코드의 형태로 export 할 수 있기에, 공유하고자 하는 소스와 리소스를 Swift Package의 형태로 만들어 사용하고자 했습니다. - xcframework의 형태로도 unversal.. [RxSwift] Operator (1편 - Combining Operator: SwitchLatest, Merge) Combining Operator SwitchLatest 🐣 두 개의 옵저버블 간에 원하는 옵저버블만 구독할 수 있게 전환하는 스위치 역할! 정의 🐣 Transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence. Each time a new inner observable sequence is received, unsubscribe from the previous inner observable sequence. 옵저버블 시퀀스들의 옵저버블 시퀀스를 가장 최근의 옵저버블 시퀀스로부터 값을 생성하는 옵저버블.. [RxSwift] RxSwift 기본 (2편 - RxCocoa) [Swift] RxSwift 기본 1편 : Observable, Observer, Subject RXCocoa RxCocoa는 UI 작업에 필수적인 라이브러리입니다. RxCocoa는 RxSwift의 companion 라이브러리로, UIKit과 Cocoa 프레임워크 기반 모든 클래스를 가지고 있습니다! (RxSwift는 UIKit에 대한 정보가 없음) RxCocoa를 사용하여 UIButton의 Tap 이벤트, 테이블뷰의 delegate Method(didSelectItemAt)등 여러가지 기능들을 쉽게 사용할 수 있습니다~! 아래는 RxCocoa에서 UIKit의 여러 요소들을 익스텐션하는 모습입니다. 📌 Relay RxCocoa는 UI 작업을 돕기 위한 라이브러리인 만큼, Subject를 Wrapping하.. 이전 1 2 3 4 5 6 다음