eung7.archive
close
프로필 사진

eung7.archive

github: @eung7

  • 분류 전체보기 (30)
    • CS (5)
      • 운영체제 (5)
      • 네트워크 (0)
    • iOS (22)
      • Swift (1)
      • iOS 기본 (6)
      • iOS 응용 (9)
      • XCode (6)
    • Flutter (1)
      • Dart (1)
      • Flutter 기본 (0)
      • Flutter 응용 (0)
    • 소프트웨어 공학 (2)
  • 홈
  • GitHub
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.
MVVM과 Coordinator Pattern 함께 사용하기 (Feat. ReactorKIt)

MVVM과 Coordinator Pattern 함께 사용하기 (Feat. ReactorKIt)

iOS 어플리케이션을 개발할 때, 아직까지 가장 많이 선호되는 디자인 패턴은 MVVM이라고 할 수 있습니다. 이번에는 MVVM과 Coordinator를 혼합한 디자인 패턴을 사용하고 구체적인 예시를 보여주는 포스트를 작성하려고 합니다. MVVM MVVM은 Model - View - ViewModel의 약어입니다. 아래 이미지에서 보이는 것과 같이 ViewModel은 View와 Model을 이어주는 인터페이스 역할을 하고 있습니다. iOS에서는 통상적으로 View를 ViewController라고 이해해도 좋습니다. 주로 사용자의 이벤트를 감지하고 그에 맞는 비즈니스 로직을 수행하여 View에게 업데이트를 요청합니다. 일반적인 ViewModel과 ViewController간의 소통은 Delegates, Ca..

  • format_list_bulleted iOS/iOS 응용
  • · 2024. 3. 30.
Coordinator Pattern의 개념과 적용 방법

Coordinator Pattern의 개념과 적용 방법

Coordinator Pattern을 한 마디로 정의하면 화면 전환에 대한 코드를 다른 객체에 위임하여 별도로 관리할 수 있도록 하는 디자인 패턴입니다. 그렇다면 이것을 “왜” 사용하는 걸까요? 우리의 ViewController는 할 일이 매우 많습니다. 복잡한 UI를 구성하는 UI일수록 더욱 그렇습니다. 이외에도 데이터와 UI 바인딩, 라이프 사이클 관리, 또 MVC 패턴을 사용한다면 그 크기가 더욱 방대해질 것입니다. 이렇게 하나의 ViewController에서 많은 역할을 수행하면 정작 해야할 UI 관리에 집중을 하지 않게 될 수 있습니다. Coordinator Pattern의 장점 그래서 등장한 것이 Coordinator Pattern디자인 패턴입니다. 우리는 ViewController에서 화면 ..

  • 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
  • 2
  • 3
  • 4
  • 5
  • navigate_next
전체 카테고리
  • 분류 전체보기 (30)
    • CS (5)
      • 운영체제 (5)
      • 네트워크 (0)
    • iOS (22)
      • Swift (1)
      • iOS 기본 (6)
      • iOS 응용 (9)
      • XCode (6)
    • Flutter (1)
      • Dart (1)
      • Flutter 기본 (0)
      • Flutter 응용 (0)
    • 소프트웨어 공학 (2)
Copyright © Eung7 모든 권리 보유.

티스토리툴바