05.07 (수) iOS 사전 캠프

2025. 5. 7. 20:38·🖋️ TIL Journal
-->

TIL은 편한 말투로 작성됩니다~

 

📍 오늘 학습한 내용 정리
1. 알고리즘에 사용되는 문법 정리
2. MVC, MVVM 패턴 공부

 


알고리즘에 사용되는 문법 정리

알고리즘 문제를 풀 때 자주 사용된다고 느꼈던 함수, 메서드 등을 정리했다. 앞으로도 문제를 풀다가 자주 사용되는 문법이 있으면 추가로 정리할 예정이다. [Swift/Algorithm] 알고리즘에 자주 사용되는 문법 정리

 

아키텍처를 사용하는 이유

앱을 개발할 때 아키텍처를 설계하는 이유는 코드의 가독성, 유지보수성, 확장성을 높이기 위해서 사용된다.

 

iOS에서는 대표적으로 MVC(Model-View-Controller)와 MVVM(Model-View-ViewModel) 두 가지 패턴이 많이 사용된다.

 

 

MVC(Model-View-Controller)

MVC는 오랫동안 사용되어 온 아키텍처 패턴으로, 앱의 구조를 모델(Model), 뷰(View), 컨트롤러(Controller)의 세 개의 역할로 분리한 것이다.

 

MVC 패턴 구조

  • Model : 데이터 및 비즈니스 로직을 담당
  • View : 사용자에게 보여지는 UI 요소
  • Controller : 사용자의 입력(Action)을 받고 처리하는 부분 (Model과 View의 중개자 역할)

 

MVC 패턴 동작

  1. 사용자가 View(UI)에서 동작을 수행하면
  2. Controller는 사용자 입력을 받아 Model에게 데이터 요청
  3. Model이 처리한 결과를 반환
  4. Controller가 결과를 View에게 전달
  5. View(UI)가 업데이트되어 사용자에게 보여줌

 

MVC 패턴의 장/단점

  • 장점
    • 직관적이고 간단한 구조
    • iOS에서 기본적으로 권장하는 패턴
    • 소규모 프로젝트에 적합
    • 많은 개발자들에게 친숙한 패턴이기 때문에 개발자들이 쉽게 유지보수 가능
  • 단점
    • 코드 재사용성이 떨어지고, 유닛 테스트를 진행하기 어렵다.
    • 대부분의 코드가 Controller에 밀집되어 크기가 비대해지고 구조가 복잡해진다. (Massive View Controller 문제)
    • 프로젝트의 규모가 커질수록 유지보수가 힘들어진다.

 

MVVM(Model-View-ViewModel)

MVVM은 MVC의 복잡한 Controller 문제를 개선하기 위해 나온 구조로, View와 Model 사이에 ViewModel을 두어 UI 관련 로직을 분리한다.

 

 

MVVM 패턴 구조

  • Model : 데이터 및 비즈니스 로직을 담당
  • View : 사용자에게 보여지는 UI요소
  • ViewModel : UI와 모델을 연결하는 중간 계층, 비즈니스 로직과 UI 로직을 처리

 

MVVM 패턴 동작

  1. 사용자가 View(UI)에서 동작을 수행하면
  2. View가 ViewModel에 사용자 입력을 전달
  3. ViewModel이 Model에게 데이터 요청 및 처리
  4. Model이 처리한 데이터를 반환
  5. ViewModel이 반환된 데이터를 받아 View에게 전달
  6. View(UI)가 자동 업데이트하여 사용자에게 보여줌

 

MVVM 패턴의 장/단점

  • 장점
    • 코드 재사용성이 높음
    • UI 로직을 ViewModel에서 처리하여 컨트롤러가 가벼워짐
    • 테스트하기 쉬움 (ViewModel을 단위 테스트 가능)
  • 단점
    • UIKit에서는 데이터 바인딩이 기본 제공되지 않기 때문에, RxSwift나 Combine 등의 프레임워크가 필요할 수 있음
    • View Model의 설계가 쉽지 않다. (구조가 상대적으로 복잡함)

 

 

MVC vs MVVM 비교

비교 항목 MVC MVVM
구조 Model-View-Controller Model-View-ViewModel
컨트롤러 역할 크고 복잡해질 수 있음(Massive View Controller) ViewModel이 UI 로직을 분리하여 컨트롤러가 가벼워짐
코드 재사용성 낮음 높음 (ViewModel 재사용 가능)
유지 보수성 코드가 많아지면 어려움 ViewModel을 통한 분리가 되어 유지 보수 용이
테스트 가능성 어렵고 제한적 용이(ViewModel 단위 테스트 가능)

 

언제 어떤걸 선택해야할까?

  • 소규모 프로젝트, 빠른 개발이 필요할 때 -> MVC 패턴
  • 유지 보수성과 확장성이 중요한 경우 -> MVVM 패턴
  • RxSwift와 결합하여 반응형 UI를 구현할 경우 -> MVVM 패턴

 

'🖋️ TIL Journal' 카테고리의 다른 글

05.12 (월) iOS 사전캠프  (0) 2025.05.12
05.08 (목) iOS 사전 캠프  (0) 2025.05.08
05.02 (금) iOS 사전 캠프  (1) 2025.05.02
05.01 (목) iOS 사전 캠프  (0) 2025.05.01
04.30 (수) iOS 사전 캠프  (0) 2025.04.30
'🖋️ TIL Journal' 카테고리의 다른 글
  • 05.12 (월) iOS 사전캠프
  • 05.08 (목) iOS 사전 캠프
  • 05.02 (금) iOS 사전 캠프
  • 05.01 (목) iOS 사전 캠프
MoriOS
MoriOS
기억하기 위해 기록하는 공간 🖋️
  • MoriOS
    MoriOS
    MoriOS
  • 전체
    오늘
    어제
    • 분류 전체보기 (35) N
      • 📌 Swift (10)
      • 📱 iOS (4)
      • 💡 Algorithm (1)
      • ❕Data structure (4)
      • 🪙 Python (0)
      • ⚙️ Git (2)
      • 🖋️ TIL Journal (11) N
      • 📝 Etc (3)
  • 블로그 메뉴

    • GitHub
  • 인기 글

  • 태그

    낼배캠
    swift min
    weak
    터미널 기본 경로
    todo앱
    Components
    swift 아스키
    낼배캠 사전 캠프
    후행클로저
    iterm 실행 폴더
    swift
    swift max
    swift 알고리즘 팁
    todo 앱
    iterm2 기본 경로
    Optional
    joined()
    weak vs unowned
    Split
    swift 대소문자
    swift optional
    swift ismultiple
    swift 수학
    ios
    ios segue
    swift 최대 최소
    TiL
    터미널 워킹 디렉토리
    강한 참조
    ios 데이터 저장
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
MoriOS
05.07 (수) iOS 사전 캠프
상단으로

티스토리툴바