eung7.archive
close
프로필 사진

eung7.archive

github: @eung7

  • 분류 전체보기 (33)
    • CS (5)
      • 운영체제 (5)
      • 네트워크 (0)
    • iOS (23)
      • Swift (1)
      • iOS 기본 (6)
      • iOS 응용 (10)
      • XCode (6)
    • Flutter (3)
      • Dart (1)
      • Flutter 기본 (2)
      • Flutter 응용 (0)
    • 소프트웨어 공학 (2)
  • 홈
  • GitHub
RxFlow로 Coordinator 고급스럽게 사용하기

RxFlow로 Coordinator 고급스럽게 사용하기

발견한 Coordinator의 문제점 Rx를 대부분으로 사용하는 프로젝트에서 Coordinator만 Reactive하지 않다는 문제점 사용자 액션 및 이벤트를 Coordinator에게 전달할 때, 넘어가야할 객체의 수가 많은 경우가 존재 기존에는 Delegate Pattern으로 이벤트를 전달했지만 중복된 코드가 많아지고 코드의 가시성이 현저히 떨어짐 위 사진은 일반적인 경우지만 더 많은 하나의 이벤트가 훨씬 많은 Delegate 메서드를 필요로 하는 경우도 존재 RxFlow 코디네이터 패턴에 ReactiveX(rx)를 접목시켜 만든 라이브러리 고전적인 Delegate Pattern을 탈피하고 Flows를 이용하여 네비게이션이 좀 더 명확해짐 FlowCoordinator를 기본적으로 제공하여 Flows사..

  • format_list_bulleted iOS/iOS 기본
  • · 2024. 4. 4.
RxDataSource의 다중 섹션을 사용할 때 ReloadData 문제와 해결방법

RxDataSource의 다중 섹션을 사용할 때 ReloadData 문제와 해결방법

서론 해당 프로젝트는 RxSwift, ReactorKit 기반으로 구현되어 있어서 다른 기술 스택 모두 Reactive화를 시키는 것에 의의를 두고 RxDataSource를 도입했습니다. 하지만 RxDataSource를 사용하면서 다중 에서의 트러블 슈팅에 대한 것을 소개하고 그 해결 과정에 대해서 소개하려고 합니다. RxDataSource의 문제 발견 마지막 취향 섹션을 선택할 때, 나머지 이름, ID 섹션이 모두 초기화되는 문제점이 발생했습니다. 왜 이런 이슈가 발생하는걸까요? 원인을 파악하기 위해서 디버그 과정을 거쳐야합니다. private lazy var dataSource: EditMyPageDataSource = EditMyPageDataSource( configureCell: { [weak ..

  • format_list_bulleted iOS/iOS 기본
  • · 2024. 4. 4.
SwiftUI, View의 최적의 성능을 만들어내는 방법

SwiftUI, View의 최적의 성능을 만들어내는 방법

SwiftUI에는 다양한 툴을 이용하여 데이터 모델을 정의할 수 있습니다. State, ObservableObject와 관련된 툴들이 하나의 예시입니다. 이 툴들과 SwiftUI의 뷰들간의 최적의 성능을 만들어내기 위해서는 선행적으로 뷰들이 내부적으로 어떻게 동작하는지에 대한 이해가 필요합니다. 일반적으로 뷰는 UI 컴포넌트를 직접적으로 가지고 있습니다. 그렇기 때문에 뷰는 비용이 적게 들어야 함과 동시에 가벼워야 합니다. 여기서 유의할 점이 있습니다. 화면의 나타나는 View의 수명과 Struct인 View의 수명은 따로 움직입니다. 개발자가 직접 코드를 입력하는 View 프로토콜을 채택하는 구조체는 매우 짧은 수명을 가집니다. 내부적으로 SwiftUI는 이 구조체를 이용하여 화면을 렌더링하고 사..

  • format_list_bulleted iOS/iOS 기본
  • · 2024. 3. 30.
SwiftUI, The Source Of Truth

SwiftUI, The Source Of Truth

SwiftUI에서 UI와 관련된 데이터 플로우에서 가장 중요한 것은 The Source Of Truth입니다. 직역 그대로 복사된 데이터들이 아니라 원본 데이터라는 뜻을 가지고 있습니다. SwiftUI는 원본 데이터의 변경으로 화면의 렌더링을 개발자의 의도적인 업데이트없이 가능하게 됩니다.UIKit에서는 데이터와 화면간의 인터페이스를 Delegate나 Closure를 이용한 것을 자주 보셨을 겁니다. 그렇지만 SwiftUI에서는 The Source Of Truth때문에 이런 것들이 필요 없게 됩니다. SwiftUI에서 소개하는 툴은 대표적으로 두 가지입니다.StateState는 대표적인 SwiftUI의 Source Of Truth입니다. 기존 데이터 모델의 @State 어노테이션을 추가하면 구조체..

  • format_list_bulleted iOS/iOS 기본
  • · 2024. 3. 30.
[iOS] ReactorKit 심화 개념 (2/2)

[iOS] ReactorKit 심화 개념 (2/2)

Global States ReactorKit에는 Global State를 위한 Action → Mutation → State Flow가 존재하지 않음 transform(mutation:)을 이용하여 global state를 mutation으로 변환할 수 있음 currentUser라는 BehaviorSubject인 global state가 있다고 가정 위 코드는 currentUser가 변할떄마다 Mutation.setUser를 방출할 수 있게 한다. View Communication ReactorKit을 사용할때는 view communication에 대해 callback closures나 delegate pattern을 지양 Reactorkit 공식 입장은 reactive extensions를 이용해 vi..

  • format_list_bulleted iOS/iOS 기본
  • · 2022. 11. 14.
[iOS] ReactorKit 기본 개념 (1/2)

[iOS] ReactorKit 기본 개념 (1/2)

기본 개념(Basic Concept) ReactorKit은 Reactive 및 단방향 플로우 아키텍처를 제공하는 프레임워크 중 하나이다. 아래 사진 처럼 Action과 View State는 Observable을 통해 전달받게 된다. 즉 View는 User Action에 대해 방출만을 할 수 있으며 Reactor는 State에 대해 방출만을 할 수 있다. ReactorKit을 채택함으로써 얻는 효과는 다음 세 가지가 있다. Testability Start Small Less Typing 이유는 아래와 같다. View가 비즈니스 로직과 분리되어 구현 Reactor는 View와 완전히 독립적인 개체로 존재 특정 몇개의 View에게 ReactorKit을 적용 가능 (기존 프로젝트 모든 코드를 다시 작성할 필요X..

  • format_list_bulleted iOS/iOS 기본
  • · 2022. 11. 14.
  • navigate_before
  • 1
  • navigate_next
전체 카테고리
  • 분류 전체보기 (33)
    • CS (5)
      • 운영체제 (5)
      • 네트워크 (0)
    • iOS (23)
      • Swift (1)
      • iOS 기본 (6)
      • iOS 응용 (10)
      • XCode (6)
    • Flutter (3)
      • Dart (1)
      • Flutter 기본 (2)
      • Flutter 응용 (0)
    • 소프트웨어 공학 (2)
Copyright © Eung7 모든 권리 보유.

티스토리툴바