iOS Unix 기반의 맥 OS X를 기반으로 해서 다윈 커널을 가지고 있는 모바일 OS이다.
iOS OS 레이어기반으로 구성되어있으며
iOS는 아래 층부터 [Core OS]-[Core Service]-[Media]-[Cocoa Touch / MacOS: Cocoa]-[Application] 으로 이루어져 있으며, Core OS로 갈수록 기본이 되는 최하위레이어이고, Cocoa Touch으로 갈수록 그래픽과 interface와 관련된, 사용자와 관련이 있는 최상위레이어다.
Application
iOS의 가장 바깥 계층으로, Apple App, Third-Party App이 여기에 속한다.
사용자와 가장 맞닿아 있는 계층이다.
Cocoa / Cocoa Touch
사용자가 iOS 운영체제과 일할수있게 하는 인터페이스의 역할을 하는 application layer
화면의 그래픽 UI 및 터치의 기능을 제공
실제로 개발할 때 가장 많이 접하게 되는 계층이다.
UIKit(UI구성,터치), MapKit(지도), MessageUI(메세지,이메일) 등의 기능이 있음
AvFoundation(미디어 재생관련), MediaPlayer(플레이어), Core Image(이미지 가공) 등의 기능이 있음
ULKit Graphics / Core Graphics Framework / Core Animation / Media Player Framework / AV Kit / Open AL / Core Images / GL Kit
Core Services
GPS 나침반, 가속도 센서, 자이로스코프 디바이스 등 하드웨어적 기능들이 속한다.
Core OS에서 제공하지 않는 기초적인 기능들을 포함
ARC, low-level 네트워크 통신, string 조작, 데이터 포메팅 제공, 내부 데이터/위치/센서/계정관리 등을 사용한 기능 제공
다음과 같은 프레임워크가 포함된다.
Core Motion Framework / Framework / Address Book Framework / Cloud Kit Framework / Core Data Framework / Core Foundation Framework / Core Location Framework / Foundation Framework/ HealthKit Framework / HomeKit Framework / Social Framework / StoreKit Framework
Core OS
하드웨어와 가장 가까이 있는 최하위 계층이다.
iOS 의 기본이 되는 층으로, 시스템의 핵심기능을 포함하는 기본적인 부분을 관리
C 기반의 저수준의 API 로 구성됨
데이터 처리, 네트워크, 파일 접근 등 시스템의 핵심 기능을 포함
다음과 같은 프레임 워크를 포함한다
Core Bluetooth Framework / External Accessories Framework / Accelerate Framework / Security Services Framework / Local Authorization Framework etc.
Cocoa Touch Framework
사용자가 iOS 운영체제과 일할수있게 하는 인터페이스의 역할을 하는 application layer
화면의 그래픽 UI 및 터치의 기능을 제공
실제로 개발할 때 가장 많이 접하게 되는 계층이다.
Cocoa Touch 프레임워크는 iOS 개발을 하면서 가장 많이 마주치는 2개의 프레임워크를 포함한다.
import Foundation
import UIKit
UIKit
User Interface 를 구현하고 이벤트를 관리하는 프레임워크
UIKit 프레임워크는 제스처 처리, 애니메이션, 그림 그리기, 이미지 처리, 텍스트 처리 등 사용자 이벤트 처리를 위한 클래스를 포함한다.
그리고 테이블뷰, 슬라이더, 버튼, 텍스트 필드, 얼럿 창 등 애플리케이션 화면을 구성하는 요소들을 포함한다.
UIKit은 iOS와 tbOS플랫폼에서 사용한다.
View 와 Control 을 관리한다. 즉, View Controller를 포함한다.
UIKit은 Foundation을 상속받고 있어 UIKit 만 import되어도 Foundation 의 내용들을 사용할 수 있다.
UIKit 기능별 요소
사용자 인터페이스
view and Control : 화면에 콘텐츠 표시
view Controller : 사용자 인터페이스 관리
Animation and Haptics : 애니메이션과 햅틱을 통한 피드백 제공
Window and Screen : 뷰 계층을 위한 윈도우 제공
사용자 액션
Touch, Press, Gesture : 제스처 인식기를 통한 이벤트 처리 로직
Drag and Drop : 화면 위에서 드래그 앤 드롭 기능
Peek and Pop : 3D터치에 대응한 미리보기 기능
keyboard and Menu : 키보드 입력을 처리 및 사용자 정의 메뉴 표시
Foundation
원시 데이터 타입, 컬렉션 타입, 운영체제 서비스를 사용해 어플리케이션의 기본적인 기능을 관리하는 프레임워크
구성
Fundamentals
String, Int, Double, Number, Data - 원시 데이터 타입
Array, Dictionary, Set - 컬렉션 타입
Date, Time -날짜와 시간을 계산하거나 비교하는 작업
Data Formatting - 숫자, 날짜 등을 문자열로 변환 또는 반대 작업
Filter, Sorting - 컬렉션 요소를 검사하거나 정렬하는 작업
App Support
Resource - 에셋과 번들 데이터 접근
Notification
App Extension
Error and Exceptions
Files and Data Persistence
File System - 파일 또는 폴더를 생성하고 읽고 쓰는 기능
Archives, Serialization - 속성 목록, JSON, 바이너리 파일들을 객체로 변환 또는 반대 작업
iCloud - 사용자의 iCloud 계정을 이용해 데이터를 동기화하는 작업
Networking
URL Loading System - 표준 인터넷 프로토콜을 통해 URL과 상호 작용하고 서버와 통신하는 작업
Bonjour - 로컬 네트워크
Q. Core Foundation 과 Foundation 의 차이는?
A. 이 둘의 차이는 개발 언어 환경의 차이이다. Foundation 은 Objective-C 프레임워크 이며 Core Foundation 은 C 언어 기반이다. 그리고 Core Foundation 과 Foundation 프레임워크는 모두 Core Service 레이어의 부분이다.
App Kit, Core Data 프레임워크, Foundation 은 앱개발을 위한 Core Frame Work (Cocoa Umbrella Framework)) 인 반면, Core Foundation 은 C언어 기반의 programmatic interfaces 로 Core graphics 와 같은 C 기반 프레임워크와의 사용을 위해 고안되었다.
Foundation은 Core Foundation 을 기반으로 구현되어있다. 또한 이것이 C기반임에도 불구하고 Core Foundation 은 C보다 더 객체지향적이다.
Foundation 과 Core Foundation은 기본 데이터 타입, 데이터 관리 기능들을 제공한다.
[ ] 나중에 이 차이에 대해 더 확인해보기
Q. Cocoa Touch 의 가장 중요한 2가지는 UIkit 과 Foundation 이라고 한다. 하지만 Foundation Framework는 Core Service 계층에 있다 ?
A. Cocoa (Touch) 는 Layer Stack 전체를 감싸는 우산같은 존재이다. 따라서 Cocoa (Touch) 레이어는 스택 내부의 specific 레이어이며, 이것은 때로 간단하게 Application 전체의 레이어로 언급되기도한다.
iOS 프레임워크 계층구조
iOS Unix 기반의 맥 OS X를 기반으로 해서 다윈 커널을 가지고 있는 모바일 OS이다. iOS OS 레이어기반으로 구성되어있으며
iOS는 아래 층부터 [Core OS]-[Core Service]-[Media]-[Cocoa Touch / MacOS: Cocoa]-[Application] 으로 이루어져 있으며, Core OS로 갈수록 기본이 되는 최하위레이어이고, Cocoa Touch으로 갈수록 그래픽과 interface와 관련된, 사용자와 관련이 있는 최상위레이어다.
Application
Cocoa / Cocoa Touch
Media
Core Services
Core OS
Cocoa Touch Framework
Cocoa Touch 프레임워크는 iOS 개발을 하면서 가장 많이 마주치는 2개의 프레임워크를 포함한다.
UIKit
Foundation
주요 프레임워크와 접두어
References