iOS 앱 개발 흐름과 앱 생명주기

yeseul jang·2025년 12월 10일

iOS

목록 보기
2/5

iOS 개발의 기본 프로세스

1. 기획

  • 목적 정의, 타겟층 분석, 핵심 기능 정하기, 와이어프레임(화면 설계) 제작, 디자인 초안 작업
    기획의 중요성: 명확한 목표 설정시 불필요한 수정이 줄어듦, 빠른 개발 속도 기대됨

2. 개발

  • Xcode 프로젝트 생성, UI 구현(UIKit, SwiftUI), 기능개발(네크워크 요청, 데이터 저장, 아키텍처(MVC,MVVM)), 백엔드 연동(필요시)

  • 개발시 사용하는 도구: Xcode, Swift, UIKit/SwiftUI, Alamofire(library)-네트워크 통신 (API 요청) 요청시 사용, CoreData/Realm - 로컬 데이터 저장 시 사용

3. 테스트

  • 시뮬레이터 테스트, 실제 기기 테스트, 버그 수정 및 최적화, QA(품질테스트)
  • 테스트 유형: 기능테스트(버튼, 입력폼, 화면 전환 등이 정상 작동하는지 확인), UI테스트(화면디자인의 올바르게 표시되는지 확인, 네트워크 테스트, 배터리 및 성능 테스트
  • 테스트할 때 사용하는 도구: Xcode 시뮬레이터, TestFlight(베타 테스트를 진행할 때 사용), Firebase Crashlytics(앱의 크래시 데이터를 분석할 때 유용)

4. 배포

  • 앱을 사용자가 다운로드할 수 있도록 앱스토어에 출시하는 단계

  • 주요 활동: Apple Developer 계정 등록(앱을 배포하려면 연간 99달러의 개발자 계정이 필요),앱스토어에 업로드 (App Store Connect 사용), 앱 심사(Review) 요청, 출시 & 마케팅, 업데이트 & 유지보수

  • 배포할 때 사용하는 도구: App Store Connect(앱스토어에 앱을 올릴 때 사용하는 공식 플랫폼)

Storyboard (스토리보드 기반 UI 개발)

  • 특징
    Xcode의 Interface Builder에서 화면을 드래그 & 드롭 방식
    버튼, 라벨 등의 UI 요소를 마우스로 배치하고 속성을 설정
    Auto Layout을 시각적으로 조정 가능
    UI 변경 사항을 즉시 확인 가능

  • 장점
    빠르고 직관적 (마우스로 UI를 배치하는 이점으로 초보자도 쉽게 사용 가능)
    시각적인 피드백 (UI를 직접 보면서 조정 가능)
    Storyboard Segue 지원 (화면 간 이동(전환)을 쉽게 설정 가능)

  • 단점
    대형 프로젝트에서 관리가 어려움 (여러 개발자가 동시에 작업할 경우, 충돌이 발생할 가능성이 높음)
    성능 이슈 (Storyboard의 크기가 커지면 Xcode의 속도가 느려질 수 있음)
    버전 관리 어려움 (Git에서 충돌이 발생하면 이를 수정하는 데 어려움이 있을 수 있음)

코드 UI (Swift 코드로 UI 구성)

  • 특징
    모든 UI를 Swift 코드로 작성
    UIView , UILabel , UIButton 등을 코드로 생성하고 배치
    NSLayoutConstraint 또는 Auto Layout Anchors 를 사용해 레이아웃을 설정
    UIKit과 함께 SwiftUI처럼 코드 기반으로 화면을 구성 가능

  • 장점
    유지보수 & 협업이 용이 (Git에서 충돌이 거의 발생하지 않음)
    반복적인 UI 생성 가능 (코드로 컴포넌트를 재사용하기 쉬움)
    더 나은 성능 (불필요한 Storyboard 로딩 과정이 없음)

  • 단점
    초보자에게 어려울 수 있음 (코드로 레이아웃을 잡는 것이 처음엔 복잡할 수 있음)
    UI 변경 시 시간이 더 걸릴 수 있음 (작은 수정도 코드를 직접 변경)
    즉각적인 피드백 부족 (화면 구성을 직접 보면서 수정 힘듦)

MVC 패턴

사진 출처:https://www.geeksforgeeks.org/system-design/mvc-design-pattern/

MVC 패턴은 iOS 앱 개발에서 가장 기본적인 아키텍처 패턴
앱의 코드 구조를 Model(모델), View(뷰), Controller(컨트롤러) 세가지 역할로 나누어 관리하는 방식
유지 보수와 확장이 용이

  • Model (모델) - 데이터와 로직을 관리하는 부분
    Model은 앱에서 사용하는 데이터와 비즈니스 로직을 담당
    사용자가 입력한 정보를 저장하거나, 네트워크에서 받아온 데이터를 가공하는 역할

  • View (뷰) - 사용자에게 보이는 화면(UI) 부분View는 화면을 구성하는 요소(UI)를 담당
    텍스트, 버튼, 이미지 등의 UI 요소를 표시하고, 사용자 입력을 받음
    하지만, View 자체는 데이터를 직접 처리하지 않음

  • Controller (컨트롤러) - Model과 View를 연결하는 부분
    Controller는 사용자의 입력을 처리하고, Model과 View를 연결하는 역할
    Model에서 데이터를 받아 View에 전달하거나, View에서 발생한 이벤트를 Model로 넘김

앱 생명주기 (App Life Cycle)

사진출처:https://developer.apple.com/documentation/uikit/managing-your-app-s-life-cycle

  • 앱이 실행될 때 (App Launch)
    사용자가 앱 아이콘을 눌러 실행하면 iOS가 앱을 메모리에 로드

  • 앱이 활성화될 때 (Foreground & Active State)
    앱이 Inactive 상태에서 Active 상태로 전환되면 사용자의 입력을 받을 수 있음

  • 앱이 백그라운드로 이동할 때 (Background State)
    사용자가 홈 버튼을 누르거나 다른 앱으로 전환하면 앱이 백그라운드 상태

  • 앱이 다시 활성화될 때 (Returning to Foreground)
    이전에 중단된 작업을 다시 시작

앱이 실행될 때의 주요 단계 (Foreground, Background, Suspended)

상태설명
Not Running앱이 실행되지 않은 상태
Inactive실행 중이지만 사용자 입력을 받지 않는 상태
Active실행 중이며 사용자 입력을 받을 수 있는 상태
Background백그라운드에서 실행되는 상태
Suspended백그라운드에 있지만 실행이 멈춘 상태
profile
iOS 개발

0개의 댓글