### iOS는 계층 구조로 이루어져 있습니다
# Core OS
-
하드웨어와 가장 가까이 있는 최하위 계층
-
C기반의 저수준의 API로 이루어져 있음
-
데이터처리, 네트워크, 파일 접근 등 한다고 볼 수 있음.
시스템의 핵심 기능을 포함하는 기본적인 부분들을 관리
# Core Service
- 시스템의 핵심 기능을 관리한 Core OS에서 제공하지 않는 부가기능들을 포함
- 내부 데이터/위치/센서 등의 기능을 제공
- CoreMotion(기기센서),Accounts(계정관리),Foundation(데이터 관리) 등의 기능 제공
# Media
- 그래픽이나 오디오, 비디오 등 멀티미디어 기능을 제공
- C와 Objective-C가 혼합되어 있는 상태
- AvFoundation(미디어 재생관련),MediaPlayer(플레이어),Core Image(이미지 가공)등의 기능 포함
# Cocoa Touch
- 화면의 그래픽 UI 및 터치의 기능을 제공
- UIKit(UI구성, 터치), MapKit(지도),MessageUI(메세지, 이메일) 등의 기능 포함
### iOS의 장단점
장점
- 명령이 기계로 전달되는 단계가 안드로이드에 비해 적으므로, OS의 속도가 빠르고 애니메이션 또한 매끄럽게 구동되어진다.
- 앱을 설치할 수 있는 경로는 앱스토어가 유일하므로, 바이러스나 악성코드가 침투할 일이 비교적 적다.(보안에 유리)
- 사용자가 꼭 필요한 기능만 담겨있으므로, 얻을 수 있는 가용 저장공간이 크다.
- 심플하고 아름다운 UI, 고품격 음질, 정해져있는 포트의 위치와 크기, 자동 동기화 기능인 아이클라우드를 통한 완벽한 자동 백업기능
단점
- 아이폰, 팟, 패드에만 설치할 수 있는 한정된 작동기기
- 아이폰 용 앱 개발 프로그램은 맥 OS X에서만 작동되는 한정된 개발환경
- 설계도는 설계자만이 볼 수 있고, 클로즈드 소스(프로그램의 설계도 소스를 비공개로 유지)이다.
- 한정된 코덱 지원, 사용자 튜닝의 어려움
### 앱의 프로세스 구조
1) 엔트리 포인트(UIApplicationMain) :
-
내재적으로 존재하는 main()함수에서 UIApplicationMain를 호출(info.plist를 바탕으로 앱에 필요한 데이터와 객체 로드)
-
UIApplication객체 반환
-
AppDelegate객체 생성하고 UIApplication객체와 연결
- AppDelegate.swift : iOS시스템은 앱을 실행할 때 @UIApplicationMain을 찾아가, 해당 클래스를 델리게이트로 지정
- UIApplication은 앱 그 자체(생성한 객체, 앱의 기능 모두 이곳에 포함되어 있는 하위 객체)
- AppDelegate(싱글톤)는 UIApplication으로부터 위임받은 일부 권한을 이용하여 상호작용하는 역할
2) iOS12이하 앱의 라이프 사이클 : AppDelegate가 관리
-
Not Running (앱이 시작되지 않았거나 시스템에 의해 종료된 상태)
-
Inactive (앱이 실행 중, 이벤트를 받지 않은 상태)
-
Active (앱 실행 중, 이벤트 받은 상태)
-
Background (앱이 백그라운드에 있지만 코드가 실행되고 있는 상태)
-
Suspended (앱이 메모리에 남아있지만 실행되지 않은 경우)
3) iOS13이상 앱의 라이프 사이클 : Scene에 의한 라이프 사이클
- scene은 기기에서 실행중인 앱 UI의 한 인스턴스를 의미(사용자는 한 앱을 동시에 여러 개 실행 가능)
- 유저는 각 앱에 대해 여러 Scene을 만들고 각 Scene마다 다른 상태가 될 수 있음
- 하나의 앱은 여러개의 Scene을 갖을 수 있으며, 새로운 Scene을 만들어 달라고 요청하면 unattached상태로 만듦
'IOS > iOS' 카테고리의 다른 글
[TIL] 라이브러리, 프레임워크의 차이 (0) | 2020.12.21 |
---|---|
[TIL] iOS MVC to MVVM Refactoring (0) | 2020.12.01 |
[TIL] iOS. Password AutoFill (0) | 2020.11.26 |
[TIL] iOS. MVVM without Rxswift (0) | 2020.11.20 |
iOS. 유효성 검사 포맷( Validation Check ) (0) | 2020.11.18 |