iOS: 개요, 시스템 아키텍처 및 Swift 언어

저자: IT Sectr 게시일: 2026-02-07 읽는 시간: 10 분

iOS는 Apple의 모바일 운영 체제로, iPhone 및 iPod touch를 구동합니다. iOS 개발은 Xcode 환경에서 Swift 언어로 이루어집니다. 플랫폼 아키텍처, 주요 프레임워크 및 App Store 게시 프로세스를 살펴보겠습니다.

주요 내용

  • iOS는 XNU 커널, Darwin 코어 레이어 및 Cocoa Touch 사용자 레이어를 갖춘 모놀리식 OS
  • Swift는 ARC 자동 메모리 관리 및 프로토콜 지향 프로그래밍을 갖춘 주요 개발 언어
  • UIKit 및 SwiftUI는 인터페이스 구축을 위한 두 가지 프레임워크: 명령형과 선언형
  • App Store는 필수 검토가 있는 유일한 공식 배포 채널
  • App Sandbox는 각 앱을 별도 컨테이너에 격리하는 보안 모델

iOS란?

iOS는 Apple의 모바일 운영 체제로, 2007년 첫 번째 iPhone과 함께 처음 출시되었습니다. 시스템은 XNU 마이크로커널 위에 구축되었으며, Mach와 FreeBSD의 구성 요소를 결합한 하이브리드 커널입니다. Android와 달리 iOS는 폐쇄형 플랫폼입니다. 앱 설치는 App Store를 통해서만 가능하며 시스템 소스 코드는 공개되지 않습니다.

Apple은 하드웨어와 소프트웨어를 모두 제어하여 높은 수준의 최적화를 보장합니다. StatCounter(2026)에 따르면, 전 세계 모바일 OS 시장에서 iOS의 점유율은 약 28%이며 미국과 일본에서는 50%를 초과합니다.

시스템은 App Sandbox 모델을 사용합니다 — 각 앱은 격리된 환경에서 실행되며 시스템 대화 상자를 통한 명시적 사용자 허가 없이 다른 앱의 데이터에 접근할 수 없습니다.

iOS 버전 역사

첫 번째 버전인 iPhone OS 1.0은 타사 앱을 지원하지 않았습니다. App Store는 2008년 iOS 2.0과 함께 등장했습니다. 주요 이정표: iOS 4(멀티태스킹), iOS 7(플랫 디자인), iOS 10(iMessage 앱), iOS 14(데스크톱 위젯), iOS 17(StandBy 모드). 주요 릴리스마다 새로운 API와 프레임워크가 도입됩니다.

iOS 버전연도주요 혁신
iPhone OS 12007첫 번째 버전, App Store 없음
iOS 22008App Store, 타사 앱
iOS 42010멀티태스킹, FaceTime
iOS 72013전체 인터페이스 재설계
iOS 102016iMessage 앱, SiriKit
iOS 142020위젯, App Library, Picture in Picture
iOS 172023StandBy, NameDrop, Live Voicemail

iOS 아키텍처: 시스템의 4계층

iOS 아키텍처는 4개의 추상 계층으로 구성되며, 각 계층은 상위 계층에 API를 제공합니다. 하위 계층은 커널과 시스템 서비스이고, 상위 계층은 사용자 프레임워크입니다.

Cocoa Touch — 최상위 계층

Cocoa Touch는 사용자 인터페이스 구축을 위한 프레임워크 계층입니다. UIKit, SwiftUI, Foundation, MapKit, NotificationCenter 및 개발자가 직접 작업하는 기타 API가 포함됩니다. UIKit은 UIViewController, UIView, UIWindow 및 모든 시각적 구성 요소를 제공합니다.

Media — 그래픽 및 사운드

Media 계층에는 Core Graphics, Core Animation, Core Image, AVFoundation 및 Metal이 포함됩니다. Metal은 GPU용 저수준 API로, 게임 및 증강 현실 앱에서 높은 그래픽 성능을 제공합니다. Core Animation은 하드웨어 가속을 통해 레이어 수준에서 애니메이션을 관리합니다.

Core Services — 시스템 서비스

Core Services에는 Core Data, CloudKit, Core Location, HealthKit, Core Motion 및 Network가 포함됩니다. CFNetwork는 네트워크 프로토콜 작업을 위한 저수준 C 인터페이스입니다. Foundation은 NSString, NSArray, NSDictionary 클래스를 갖춘 Core Foundation 위의 객체 지향 래퍼입니다.

Core OS — 커널 및 보안

최하위 계층에는 XNU 커널, APFS 파일 시스템, 암호화 모듈(CommonCrypto, Security.framework), 전원 관리 및 장치 드라이버가 포함됩니다. 이 수준에서 Secure Enclave가 작동합니다 — 생체 인증 데이터 및 암호화 키를 저장하는 보조 프로세서입니다.

objective-c
// Security 프레임워크를 통한 Secure Enclave 무결성 확인
#import <LocalAuthentication/LocalAuthentication.h>

LAContext *context = [[LAContext alloc] init];
NSError *error = nil;

if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
                          error:&error]) {
    NSLog(@"Secure Enclave를 생체 인증에 사용 가능");
} else {
    NSLog(@"Secure Enclave를 사용할 수 없음: %@", error.localizedDescription);
}

Swift — iOS 개발의 주요 언어

Swift는 Apple이 2014년에 Objective-C의 대체 언어로 발표한 프로그래밍 언어입니다. Apple의 Chris Lattner가 개발했습니다. Swift는 현대 언어(Rust, Kotlin, C#)의 구문과 C 수준의 성능을 결합합니다. TIOBE(2026)에 따르면 Swift는 상위 15개 프로그래밍 언어에 포함됩니다.

Swift의 주요 기능

Swift는 가비지 컬렉터 없이 메모리 관리를 위해 Automatic Reference Counting(ARC)을 사용합니다. 프로토콜 지향 프로그래밍(POP)을 통해 프로토콜 확장으로 타입을 확장할 수 있습니다. Optionals는 nil의 타입 안전 처리를 제공하고, 패턴 매칭은 분기 로직을 단순화합니다.

swift
import UIKit

/// 데이터 로딩 서비스를 위한 프로토콜
protocol DataServiceProtocol {
    associatedtype T
    func fetch(completion: @escaping (Result<[T], Error>) -> Void)
}

/// 사용자 로딩을 위한 서비스 구현
final class UserService: DataServiceProtocol {
    typealias T = User

    private let session: URLSession
    private let decoder: JSONDecoder

    init(session: URLSession = .shared, decoder: JSONDecoder = JSONDecoder()) {
        self.session = session
        self.decoder = decoder
    }

    func fetch(completion: @escaping (Result<[User], Error>) -> Void) {
        guard let url = URL(string: "https://api.example.com/users") else {
            completion(.failure(URLError(.badURL)))
            return
        }

        session.dataTask(with: url) { [weak self] data, response, error in
            guard let self, let data = data else {
                completion(.failure(error ?? URLError(.badServerResponse)))
                return
            }
            do {
                let users = try self.decoder.decode([User].self, from: data)
                completion(.success(users))
            } catch {
                completion(.failure(error))
            }
        }.resume()
    }
}

struct User: Codable, Identifiable {
    let id: Int
    let name: String
    let email: String
}

예제는 Swift Concurrency(async/await), associatedtype이 있는 프로토콜 및 JSON 디코딩을 위한 Codable을 사용한 데이터 로딩 서비스 구현을 보여줍니다. ARC가 자동으로 메모리를 관리하고, weak self가 클로저의 강한 참조 순환을 방지합니다.

Swift Concurrency: async/await 및 Actors

iOS 13부터 Swift는 async/await 및 Actors를 통해 내장된 비동기성을 지원합니다 — 데이터 경합으로부터 상태를 보호하는 스레드 안전 타입입니다. 멀티스레딩을 위한 DispatchQueue는 점차 async/await 및 Task 구조로 대체되고 있습니다.

swift
actor UserRepository {
    private var cache: [Int: User] = [:]
    private let service = UserService()

    func getUser(id: Int) async throws -> User {
        if let cached = cache[id] {
            return cached
        }
        let users = try await service.fetchAsync()
        guard let user = users.first(where: { $0.id == id }) else {
            throw UserError.notFound
        }
        cache[id] = user
        return user
    }
}

UserRepository 액터는 캐시 접근이 단일 스레드에서 발생하도록 보장하여 경합 상태를 제거합니다. 컴파일러는 빌드 시 격리를 확인합니다 — 액터의 변경 가능한 속성에 대한 접근은 await를 통해서만 가능합니다.

Xcode 및 개발자 도구

Xcode는 Apple의 통합 개발 환경(IDE)으로, macOS에서만 사용할 수 있습니다. 코드 편집기, 시각적 레이아웃을 위한 Interface Builder, 장치 시뮬레이터, 프로파일링을 위한 Instruments 및 LLDB 디버거가 포함됩니다. Xcode 15는 매크로가 포함된 Swift 5.9를 지원합니다.

Interface Builder 및 Storyboards

Interface Builder는 드래그 앤 드롭을 통한 인터페이스 생성과 XML 설명(XIB/Storyboard) 자동 생성을 가능하게 합니다. Storyboards는 화면 흐름을 설명합니다. 2023년부터 Apple은 SwiftUI Preview를 주요 시각적 개발 도구로 권장하지만, Interface Builder는 UIKit 프로젝트에서 계속 사용됩니다.

디버깅 및 프로파일링 도구

Xcode Instruments에는 수십 개의 템플릿이 포함됩니다: Time Profiler(CPU 분석), Allocations(메모리), Leaks(누수), Core Animation(FPS), Network 및 Energy Log. Metal Debugger는 GPU 호출 및 셰이더를 검사할 수 있습니다. LLDB는 Swift 표현식 지원 및 조건부 중단점이 있는 콘솔 디버거입니다.

iOS 개발의 주요 프레임워크

iOS SDK에는 수백 개의 프레임워크가 포함됩니다. 아래는 모든 iOS 개발자가 매일 사용하는 주요 프레임워크입니다.

프레임워크목적
UIKit인터페이스: UIView, UIViewController, 애니메이션, 제스처
SwiftUI반응형 업데이트를 갖춘 선언형 인터페이스
Foundation기본 타입: String, Data, URLSession, JSONEncoder
Core DataSQLite 로컬 데이터 저장을 위한 ORM
CloudKitiCloud 동기화 및 백엔드 없는 서버 로직
Core Location위치 정보: GPS, 지오펜싱, iBeacon
MapKitApple 지도 표시, 주석, 경로
AVFoundation오디오/비디오 캡처 및 재생
Metal저수준 그래픽 및 GPGPU 컴퓨팅
Core ML온디바이스 추론을 갖춘 기기 내 머신 러닝
PushKit / UserNotifications푸시 알림, VoIP, 콘텐츠 업데이트

Core Data: 로컬 데이터 작업

Core Data는 객체 데이터 모델 관리를 위한 프레임워크입니다. UI 스레드와 백그라운드 컨텍스트 간에 객체를 저장, 로드 및 동기화할 수 있습니다. iOS 17에서는 SwiftData가 도입되었습니다 — Swift Macros를 지원하는 Core Data 위의 현대적 래퍼입니다.

UIKit vs SwiftUI: 접근 방식 비교

UIKitSwiftUI 중 선택은 iOS 개발을 시작할 때 중요한 아키텍처 결정입니다. UIKit은 2007년부터 존재하며 모든 iOS 버전을 지원합니다. SwiftUI는 2019년에 도입되었으며 iOS 13+가 필요합니다.

기준UIKitSwiftUI
패러다임명령형 (MVC, MVVM)선언형 (상태 기반)
최소 iOSiOS 2.0+iOS 13.0+
레이아웃코드 또는 Interface Builder에서 Auto LayoutModifier chain, HStack/VStack/ZStack
사용자 정의전체 (CALayer, drawRect)수정자로 제한됨
성능높음 (수동 최적화)자동 무효화
미리보기지원 안 함실시간 Xcode Preview
테스트XCTest + Snapshot 테스트XCTest + Preview 테스트

실제로 대부분의 상용 프로젝트는 하이브리드 접근 방식을 사용합니다: 새 화면 및 간단한 폼에는 SwiftUI, 세밀한 렌더링 제어가 필요한 복잡한 사용자 정의 구성 요소에는 UIKit을 사용합니다. Apple은 SwiftUI에 적극적으로 투자하고 있으며 2028년까지 주요 프레임워크가 될 것으로 예상됩니다.

iOS 앱 생명주기

iOS 앱은 UIApplication 및 AppDelegate가 관리하는 5가지 상태를 거칩니다. SwiftUI에서는 @main 속성이 있는 App Protocol이 이 역할을 수행합니다.

앱 상태

Not running — 앱이 실행되지 않았거나 시스템에 의해 종료되었습니다. Inactive — 앱이 전경에 있지만 이벤트를 수신하지 않습니다(예: 수신 전화 중). Active — 정상 상태로, 앱이 터치 이벤트를 수신합니다. Background — 앱이 최소화되어 백그라운드 작업을 수행합니다. Suspended — 앱이 메모리에 있지만 코드를 실행하지 않습니다.

swift
import SwiftUI

@main
struct MyApp: App {
    @Environment(\.scenePhase) private var scenePhase

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .onChange(of: scenePhase) { oldPhase, newPhase in
            switch newPhase {
            case .active:
                print("앱이 활성화되었습니다")
            case .inactive:
                print("앱이 비활성 상태입니다")
            case .background:
                print("앱이 백그라운드로 전환되었습니다")
            @unknown default:
                break
            }
        }
    }
}

메모리가 부족하면 시스템이 백그라운드에서 앱을 종료할 수 있습니다. 개발자는 onDisappear 또는 ScenePhase.background를 통해 상태를 저장하여 사용자가 앱 전환 시 데이터를 잃지 않도록 해야 합니다.

App Store: 게시 및 요구 사항

App Store는 iOS용 유일한 공식 앱 스토어입니다. 게시하려면 Apple Developer Program 구독($99/년)이 필요합니다. 각 앱은 검토를 거칩니다 — 자동(바이너리 코드 정적 분석) 및 수동(인터페이스 및 콘텐츠 확인).

게시 프로세스

개발자는 Xcode에서 아카이브를 생성하고 Transporter 또는 Xcode Organizer를 통해 App Store Connect에 업로드합니다. 평균 검토 시간은 24~48시간입니다. App Review는 가이드라인 준수를 확인합니다: 데이터 보안, 성능, HIG 디자인, 숨겨진 기능 부재.

App Review 요구 사항

개인정보 보호에 특별한 주의가 기울여집니다: 모든 유형의 데이터 수집은 Privacy Manifest에 선언되어야 합니다. 2025년부터 Apple은 API 사용 이유(NSPrivacyAccessedAPITypes)를 지정하도록 요구합니다. 사용자 동의 없이 추적기를 사용하는 앱은 게시가 거부됩니다.

요구 사항설명
Privacy Manifest수집된 모든 데이터 및 수집 목적의 선언
HIG 준수Apple Human Interface Guidelines 준수
안정성검토 중 충돌 없음
Sandbox 규칙허용된 리소스에만 접근
iCloud 권한올바른 iCloud 컨테이너 구성

자주 묻는 질문

iOS 개발에는 어떤 언어가 사용되나요?

주요 언어는 Swift입니다. Objective-C도 지원되지만 주로 레거시 프로젝트에서 사용됩니다. Swift는 Apple이 2014년에 발표한 현대적인 타입 안전 언어입니다. 2020년부터 Apple은 새 프로젝트에 Swift만을 권장합니다.

UIKit과 SwiftUI 중 무엇을 선택해야 하나요?

UIKit은 최대 사용자 정의가 가능한 성숙한 프레임워크로, 복잡한 인터페이스에 적합합니다. SwiftUI는 iOS 13+용 선언형 프레임워크로, 개발 속도를 2~3배 향상시킵니다. 대부분의 프로젝트는 UIViewRepresentable 및 UIHostingController를 통해 두 접근 방식을 모두 사용합니다.

App Store에 게시하는 데 비용이 얼마나 드나요?

Apple Developer Program 연간 구독료는 개인 개발자의 경우 $99, 조직의 경우 $299입니다. 구독 없이는 게시가 불가능합니다. App Store 수수료는 개발자의 연간 수익에 따라 판매 금액의 15~30%입니다.

SwiftUI에 필요한 최소 iOS 버전은?

SwiftUI는 iOS 13(2019)부터 사용 가능합니다. 그러나 NavigationStack, Observable Macro 및 SwiftData를 포함한 모든 기능을 사용하려면 iOS 17 및 Xcode 15가 필요합니다. 이전 버전 지원은 SwiftUI 기능을 제한합니다.

iOS에서 App Sandbox란?

App Sandbox는 파일 시스템, 다른 앱의 데이터 및 시스템 리소스에 대한 앱의 접근을 제한하는 보안 모델입니다. 각 앱은 격리된 컨테이너에서 실행됩니다. 연락처, 사진, 마이크에 접근하려면 시스템 대화 상자를 통한 명시적 권한이 필요합니다.

요약

  • iOS는 XNU 커널, 앱 샌드박싱 및 필수 App Store 검토를 갖춘 폐쇄형 모바일 OS
  • Swift는 ARC, 프로토콜 지향 프로그래밍 및 async/await를 갖춘 현대적인 iOS 개발 언어
  • iOS 아키텍처는 Cocoa Touch, Media, Core Services, Core OS의 4계층으로 구성
  • Xcode는 시뮬레이터, Instruments 및 LLDB 디버거를 갖춘 유일한 개발 환경
  • UIKit 및 SwiftUI는 명령형과 선언형의 두 가지 인터페이스 접근 방식, 종종 함께 사용됨
  • App Store는 Developer Program 구독, Privacy Manifest 및 검토 필요
  • iOS 보안은 Secure Enclave, Sandbox 및 필수 데이터 암호화로 보장

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기