Apple/iOS

[iOS/iOS] iOS 내부에는 뭐가 들어있을까? (What's in iOS?)

59date 2024. 9. 10. 15:02

이번 포스팅은 iOS 내부에 대해 알아보는 포스팅을 작성해 보겠습니다.

본 포스팅의 메인은 "내부"에 대해 간단하게 알아보는 포스팅이기에 각 개념에 대해 깊은 설명이 없다는 점 참고해 주시기 바랍니다 :)

 

iOS 내부로 들어가기 이전에 먼저 iOS가 무엇인지 알아보자면.

"애플이 개발한 모바일 운영체제"입니다. 즉, 스마트폰 전용 운영체제죠

 

iOS에는 정말 많은 API로 구성되어 있는데요.

여기서 API란?

"Application Programming Interface"의 약자로, 소프트웨어 애플리케이션 간의 상호작용을 가능하게 하는 규칙과 도구의 집합입니다.

즉 API는 서로 다른 소프트웨어의 시스템이 데이터를 주고받거나 기능을 호출할 수 있도록 해주는 인터페이스입니다.

그리고 모두 프로그래밍 언어로 구성되어 있습니다.

 

정말 많은 API 중 저희가 사용해야 할 API는 무엇이 있을까요?

 

많고 많은 API를 4개의 계층으로 나누어 정리해 보겠습니다.

 

Cocoa Touch

Media

Core Services

Core OS

 

위에 4가지가 4개 계층입니다.

 

처음 Cocoa Touch부터 알아보겠습니다.

 

Cocoa Touch

UI 개발: Cocoa Touch는 iOS 앱의 사용자 인터페이스를 구축하기 위한 객체 지향 API입니다.

기능 범위: UI 요소인 버튼, 슬라이더뿐만 아니라, 휴대폰의 흔들기 감지, 방향 전환에 따른 반응 등도 포함됩니다. 애니메이션 기능도 제공합니다.

애니메이션: 많은 iOS 앱에서 애니메이션을 활용하여 더욱 매력적인 인터페이스를 제공하는 것이 일반적입니다. Cocoa Touch는 이러한 UI 요소와 애니메이션을 포함하여 사용자 인터페이스를 구성하는 데 필요한 것을 제공합니다.

 

 

Media

중요성: Media 계층은 비디오 및 오디오 관련 기능을 담당하며, 이미지 처리 등도 포함하는 중요한 계층입니다.

기능: JPEG 이미지와 같은 2D 그래픽을 처리하기 위한 Quartz API, 3D 그래픽을 위한 OpenGL 등 다양한 미디어 관련 기능을 제공합니다. 예를 들어, 비디오 재생, 녹음, 사진에 필터 적용 같은 기능이 이 계층에서 이루어집니다.

다양성: Media 계층은 비디오, 모든 종류의 오디오 프레임워크, 이미지를 처리하는 데 필요한 다양한 도구들을 포함합니다.

 

 

Core Services

객체 지향 프로그래밍: Core Services는 UNIX 위에 구축된 객체 지향 계층으로, 다양한 서비스를 제공합니다.

주요 기능: 이 계층은 네트워킹, 멀티스레딩, 사용자 설정, SQL 데이터베이스 사용 등을 위한 API를 제공합니다. 예를 들어, Wi-Fi 연결이나 앱에서 데이터를 다운로드할 때 사용되는 네트워킹 기능사용자의 설정 정보를 저장하는 Keychain 기능이 포함됩니다.

UI와의 관계: Core Services는 UI와 무관하며, 기본적인 서비스와 기능을 제공하는 역할을 합니다. 개발자는 이러한 객체 지향 API를 통해 시스템 리소스를 효과적으로 활용할 수 있습니다.

 

 

Core OS

기초 구조: 아이폰의 기본적인 작동을 담당하며, UNIX 기반으로 작동합니다. 이 구조는 멀티태스킹 기능과 UNIX 파일 시스템을 포함하여 iOS 앱 개발에 큰 도움이 됩니다.

구성 요소: Core OS는 모바일 기기에 특화된 기능들을 포함합니다. 예를 들어, 전원 관리와 접근 제어를 위한 Keychain Access 같은 기능이 있습니다.

기본 원리: 전체적으로 Core OS는 하드웨어와 소프트웨어 간의 기본적인 상호작용을 처리하며, 배터리 관리, 파일 저장 방식 같은 기초적인 시스템 기능이 여기에 포함됩니다.

 

 

이와 같이, 4개 계층은 Cocoa Touch, Media, Core Services, Core OS로 나뉘며, 각각 UI 구성부터 시스템의 기본 기능까지 다양한 역할을 담당합니다. 이 계층들은 유기적으로 상호작용하여 안정적이고 효율적인 앱 개발을 지원하게 됩니다.

 

 

iOS 개발 플랫폼

iOS 개발을 시작하기 위해서는 플랫폼의 핵심 요소를 잘 이해하는 것이 중요합니다. 

iOS 개발에 필수적인 중요한 툴 4가지를 간단하게 소개해보겠습니다.

Tools

Xcode: iOS 개발의 필수 도구로, 통합 개발 환경(IDE) 역할을 하며, 에디터, 디버거, 소스 코드 관리, 시뮬레이터 기능까지 제공합니다. Interface Builder를 사용해 UI를 시각적으로 구성할 수 있으며, 자동 완성빌드 최적화 기능을 통해 개발 속도와 생산성을 높일 수 있습니다. iOS, macOS, watchOS, tvOS 모두 이 도구로 개발할 수 있습니다.

 

 

Language(s)

프로그래밍 언어: iOS 개발에서 주로 사용되는 SwiftObjective-C는 각기 다른 특징을 가집니다. Swift안전성, 성능, 현대적인 문법을 갖춘 언어로, 개발자 커뮤니티에서 큰 인기를 얻고 있습니다. 반면, Objective-C기존의 레거시 코드에서 여전히 사용되며, C 언어와의 호환성이 강점입니다. Swift는 특히 유지보수와 가독성 면에서 더 나은 선택으로, 대부분의 최신 iOS 앱이 Swift로 개발되고 있습니다.

 

 

Frameworks

1. UI Frameworks: 사용자 인터페이스를 구축하는 데 중점을 둔 프레임워크로는 UIKitSwiftUI가 있습니다.

  • UIKit: iOS의 전통적인 프레임워크로, 뷰와 뷰 컨트롤러를 사용하여 UI를 구성합니다. 복잡한 사용자 인터페이스기존 iOS 앱에서 널리 사용됩니다.
  • SwiftUI: 최신 UI 프레임워크로, 선언적 문법을 사용하여 UI를 구성합니다. 코드 작성이 간결하고, 리얼타임 프리뷰를 지원하여 효율적인 UI 개발을 가능하게 합니다.

2. Service Frameworks: 특정 기능을 제공하는 서비스 프레임워크로, Core Data(데이터 관리), Core Motion(모션 센서), MapKit(지도 및 위치 서비스) 등이 있습니다. 이들 프레임워크는 앱의 특정 기능을 구현하는 데 유용합니다.

  • Core Data: 데이터 모델링과 객체 그래프 관리를 지원하며, 영구 저장복잡한 데이터 구조를 처리하는 데 유용합니다.
  • Core Motion: 기기의 가속도계, 자이로스코프를 사용하여 모션 데이터를 수집하고, 운동 추적 기능을 제공합니다.
  • MapKit: 지도와 위치 기반 서비스를 제공하며, 사용자 위치 추적, 경로 안내, 지도 표시 등의 기능을 포함합니다.

둘을 간단하게 요약하자면

UI사용자 인터페이스를 구성하고, Service앱의 기능을 추가한다고 생각하면 될 것 같습니다.

 

Design Strategy

1. MVC (Model-View-Controller)

 

모델 (Model): 앱의 데이터와 비즈니스 로직을 담당합니다.

뷰 (View): 사용자 인터페이스를 표시합니다.

컨트롤러 (Controller): 모델과 뷰 사이의 중재자 역할을 하며, 사용자 입력을 처리하고 뷰를 업데이트합니다.

 

특징: 컨트롤러가 모델과 뷰를 연결하여 사용자 입력에 따라 모델을 업데이트하고, 변경된 데이터를 뷰에 반영합니다.

 

 

2. MVP (Model-View-Presenter)

 

모델 (Model): 앱의 데이터와 비즈니스 로직.

뷰 (View): 사용자 인터페이스.

프레젠터 (Presenter): 모델과 뷰 사이의 중재자. 데이터와 UI를 연결합니다.

 

특징: 뷰는 프레젠터를 통해 모델과 상호작용하고, 프레젠터는 뷰와 모델의 역할을 분리합니다.

 

 

3. MVVM (Model-View-ViewModel)

 

모델 (Model): 앱의 데이터와 비즈니스 로직.

뷰 (View): 사용자 인터페이스.

뷰모델 (ViewModel): 모델의 데이터를 뷰에 맞게 변환하고, 뷰와의 데이터 바인딩을 처리합니다.

 

특징: 뷰모델을 통해 뷰와 모델이 자동으로 동기화되며, UI와 데이터의 연결을 간편하게 합니다.

 

 

1. MVC: 컨트롤러가 데이터와 화면을 연결해 업데이트함.

2. MVP: 프레젠터가 데이터와 화면을 중재하며 연결함.

3. MVVM: 뷰모델이 데이터와 화면을 자동으로 동기화함.

 

각 개념에 대하여 설명이 부족하여 조금 이해하기 어려운 설명일 수도 있습니다. 

하지만 본 포스팅은 "iOS 내부에는?" 이기에 간단하게 작성하였다는 점 알아주시면 감사하겠습니다!

 


 

잘못된 내용 혹은 오타가 있거나 더 좋은 내용 피드백은 언제나 환영입니다 :)