안녕하세요, iOS 개발하는 루피입니다.오늘은 공식문서를 바탕으로 Map과 FlatMap에 관해 정리해보려 합니다. 그러면 시작해 보겠습니다!! Map 과 FlatMap은 주로 Observable이 배출한 아이템들을 변환하는데 사용하는 Operator들 이다.Map : Observable이 배출한 항목에 함수를 적용한다.Map 연산자는 Source Observable이 방출하는 각 아이템에 사용자가 선택한 함수를 적용하고, 그 함수의 적용 결과를 방출하는 새로운 Observable을 반환합니다. 이때, Source Observable은 원본 데이터를 방출하는 주체를 의미한다. 쉽게 말해서는 가장 처음에 데이터를 방출하는 Observable 이라고 생각하면 됩니다. 예를 들어 코드를 살펴 보면,Observ..
iOS
안녕하세요, iOS 개발하는 루피입니다. 오늘은 ReactiveX 공식문서 Subject 부분을 공부 해보려고 합니다. 그러면 지금부터 시작해 보도록 하겠습니다!!공식문서 바로가기!!!!Subject란?Subject는 Observable이면서 동시에 Observer 역할도 할 수 있는 일종의 다리 같은 존재라고 합니다. "Observable처럼 값을 방출할 수도 있고, Observer처럼 다른 Observable들을 구독할 수도 있다고 합니다." Subject는 onNext, onError, onCompleted 등의 메서드를 사용하여 데이터를 방출하고, 이벤트를 발생시키며, 다른 Observable과도 상호작용할 수 있어요. 이처럼 Subject는 데이터를 받기도 하고, 다시 내보내기도 하죠. 그래서 ..
안녕하세요, iOS 개발하는 루피입니다. 오늘은 ReactiveX Observable 문서를 바탕으로 공부한 내용을 공유 해보려고 합니다. 다행히도 설명이 쉽고 친절해서 글이 생각보다 잘 읽히더라고요!!. 다행이지 말입니다. 암튼 지금부터 시작해보도록 하겠습니다!!! 공식문서 바로가기!!!Observable이란?ReactiveX에서 가장 중요한 개념 중 하나는 바로 Observable과 Observer입니다. 간단히 말해서, Observer는 Observable이 발행하는 데이터 또는 이벤트를 구독해서 처리하는 주체입니다. Observable이 하나 또는 여러 항목을 발행하면 Observer는 이를 보고 반응합니다. 이렇게 동작하기 때문에 비동시성 작업을 효율적으로 처리할 수 있습니다. Observ..
안녕하세요, iOS 개발하는 루피입니다. 오늘은 RxSwift의 비동기 작업에 대해 깊이 파헤쳐 보려 합니다. 지난 시간에는 데이터 바인딩을 통해 RxSwift의 기본 개념을 알아봤다면, 이번에는 RxSwift를 사용하는 이유를 좀 더 자세히 탐구해 보겠습니다! Observable을 통한 비동기 이벤트 스트림 관리RxSwift에서 Observable은 비동기 작업은 핵심입니다. Observable은 시간을 기준으로 발생하는 데이터를 스트림 형태로 처리하는데요. 네트워크 요청, UI 이벤트, 타이머 등 다양한 비동기 작업을 Observable로 감싸서 처리할 수 있습니다. 비동기 이벤트가 발생할 때마다 구독한 Observer가 그 이벤트를 받아 처리하게 됩니다. 정말 직관적이지 않나요? 예를 들어, 네트워..
안녕하세요, iOS 개발하는 루피입니다오늘은 RxSwift를 본격적으로 공부하기 전에 “왜 RxSwift를 써야 할까?”라는 고민의 답을 하나씩 찾아보려고 합니다.기존 코드로도 충분히 해결할 수 있는 것 같은데, RxSwift를 도입하면 과연 어떤 점이 달라질까요? 바로 데이터 바인딩입니다! 데이터를 UI에 반영하는 과정에서 자주 발생하는 boilerplate 코드의 문제를 해결할 수 있죠.기존 코드의 문제점기존에는 데이터와 UI의 동기화를 수동으로 처리해야 했습니다. 예를 들어, 테이블 뷰가 변경될 때마다 reloadTable()을 호출해야 하죠. 이런 반복적인 작업이 많아질수록 코드 양이 많아지고, 실수할 가능성도 커집니다. 유지 보수도 어려워지 것이라고 예상이 되네용.RxSwift의 해결책RxSwi..
안녕하세요 iOS 개발하는 루피입니다. 오늘은 MVC 패턴을 적용해 테이블 뷰를 구현해 보도록 하겠습니다. 사실 저는 아키텍처의 중요성에 대해 잘 느끼지 못했었는데요... 배워야 하는 지식인지는 알았지만, 도대체 뭐가 좋은지, 왜 써야 하는지에 대한 답은 찾지 못했습니다. 하지만 최근 프로젝트를 진행하며, 저만의 이유를 조금은 찾은 거 같습니다!! 팀원 중 한 명이 개인 사정으로 일정 기간 동안 프로젝트에 참여하지 못해서 남은 개발자들이 업무를 나누어서 맡아야 하는 상황이 발생했는데요, 이때 다른 팀원의 코드를 접근하기가 너무 편하더라고요!! 물론 해당 프로젝트는 MVVM 패턴을 사용하기는 했지만요... ㅎㅎ 암튼 오늘은 코드를 베이스로 MVC 패턴을 이용해 TableView를 공부해 보도록 하겠습니다...
UIKit을 사용하면서 코드베이스로 프로젝트를 세팅하는 방법을 남기려고 합니다.우선 세팅하는 방법을 말하기에 앞서 프로젝트를 코드베이스로 세팅하면 뭐가 좋은지에 대하여 생각해보았습니다.Code Base로 개발이 필요한 이유1. 코드만으로 되어 있어서 가볍다.2. Diff (다른 파일의 코드를 보고 비교하는 일) 보고 파악하기가 쉬워진다.3. Conflict 발생 가능성이 낮아진다.4. 재사용이 용이해진다.5. 각각의 요소에 따른 제어하는 방법을 파악할 수 있다. 저는 이정도로 생각하고 있습니다. 전체적으로 협업을 하는데 있어 편해지는거 같습니다.세팅하는 방법1. MainStoryBoard 제거StoryBoard 파일을 제거 해준다.나의 Project 파일에서 TARGETS으로 이동한다.'Build Set..
UIKit 은 iOS, iPadOS, 또는 tvOS 앱의 핵심 인프라를 구성하는 데 사용할 수 있는 다양한 구성 요소를 제공하여 앱을 빌드하는 데 필요한 여러 기능을 지원합니다.제공하는 기능1. 윈도우와 뷰 구조: UI를 구현하기 위한 구조2. 이벤트 처리 인프라: 입력을 앱으로 전달하기 위한 구조3. 메인 런 루프: 사용자, 시스템, 그리고 앱 간의 상호작용을 관리하는 구조이 외에도 여러 기능과 정보를 제공합니다. 또한, UIKit은 SwiftUI와 원활하게 작동하므로, UIKit 앱의 일부를 SwiftUI로 구현하거나 두 프레임워크 간에 인터페이스 요소를 혼합하여 사용할 수 있습니다. 예를 들어, UIKit 뷰와 뷰 컨트롤러를 SwiftUI 뷰 내에 배치하거나 그 반대로도 가능한 경우가 그 예시가 될..