2 분 소요


image-20221215220152192

iOS

  • iOS 란?
  • iOS 시스템 구조
  • CocoaTouch Framework



iOS 란?

image-20221215220435149

Apple모바일 운영체제

iOS는 iPhoneOS로써 iPhone, iPad, iPodTouch 장치를 실행시키는 Apple모바일 운영체제이다.

Unix 기반의 Mac OS X를 기반으로 다윈 커널을 가지고 있는 모바일 OS이다.



iOS 시스템 구조

image-20221215222416402

아래층으로 갈 수록 가장 기본이 되는 하드웨어에 가까운 층이고,

위로 갈 수록 사용자와 관련이 있다.


Application

iOS의 가장 바깥 계층으로써 Apple App, Third-Party App이 여기에 속한다.


Cocoa / Cocoa Touch

image-20221215222624240

Cocoa

Cocoa라는 단어가 붙으면 우선 Object-C Runtime을 기반으로

NSObject를 상속받는 모든 클래스, 개체를 가리킬 때 사용하는 단어이다.

  • Cocoa Framework : Foundation, AppKit 프레임워크를 포함하고, macOS 개발 시 사용하는 프레임워크.

Cocoa Touch

Cocoa의 기능은 물론,

앱의 다양한 기능구현에 필요한 여러 핵심 프레임워크(Ukit, Foundation, CoreData, CoreAnimation etc..)를 포함하는 최상위 레벨 프레임 워크이다.

최상위 계층이기 때문에 하위 계층의 Foundation 프레임워크를 import 할 수 있다.

  • 화면의 그래픽 UI터치의 기능을 제공하고
  • 실제 개발 시 가장 많이 접하게 되는 계층이다.


Media

image-20221215222704740

그래픽이나 오디오, 비디오 등 멀티미디어 기능을 제공하는 계층이다.

CObject-C혼합되어 있는 형태로써

AvFoundation(미디어 재생), MediaPlayer(플레이어), Core Image(이미지 가공) 등의 기능이 있다.


Core Service

image-20221215222738755

앱에 필수적인 서비스를 제공하지만 앱의 UI와는 직접적인 관계가 없고

문자열 처리, 데이터 집합, 네트워크, 주소록, 환경설정, GPS(위치), 가속도 센서 등과 같은

주로 하드웨어 특성에 기반한 서비스를 제공한다.

Core Motion(기기 센서), Account(계정 관리), Core Foundation(데이터 관리), XML Parsing, Keychain, Notification Center, StoreKit, Security, GOD 등 다양한 기능을 제공한다.


CoreOS

img

하드웨어와 가장 가까이 있는 최화위 계층으로써

시스템의 가장 핵심 기능을 포함하는 기본적인 부분들을 관리한다.

H/W ,Network와 관련된 Low-Level 서비스를 제공하며

커널, 파일 시스템, 네트워크, 보안, 전원관리, 환경설정 등의 기능을 한다.



CocoaTouch

image-20221215222624240

앞서 살펴봤듯이 코코아 터치 프레임워크란 iOS 개발 환경 구축을 위한 최상위 프레임워크이다.

즉, 일반적으로 iOS 개발을 위해 Object-C 혹은 Swift에서 사용하는 UIkit, Foundation을 포함한 대부분의 클래스, 객체들이 모두 코코아 터치 프레임워크에 속한다.

Cocoa Framework는 MacOS 개발 환경을 위한 프레임워크이고,

아이폰, 아이패드 등의 터치기반의 iOS 개발환경에는 CocoaTouch Framework라는 이름이 붙게 되었다.


img

다음은 CocoaTouch 프레임워크에 있는 프레임워크 별 주요 객체이다.

CocoaTouch 프레임워크의 주요 프레임워크들은 자신들에게 속해있는 객체의 이름에 특정 접두어를 붙이는 경향이 있다.

자 그러면, 대표적으로 UIkit, Foundation 프레임워크에 대해 자세히 알아보자.


UIkit

사용자의 인터페이스를 관리하고, 이벤트를 처리하는게 주 목적인 프레임워크.

제스처 처리, 애니메이션, 그림 그리기, 이미지 처리, 텍스트 처리 기능이 있다.

테이블 뷰, 슬라이더, 버튼, 텍스트 필드, Alert 창, 등 애플리케이션의 화면을 구성하는 요소 포함.

UIViewController, UIView(당연히 이를 상속하는 버튼, 텍스트 필드 등도 포함), UIAlertController 등 앞에 UI가 붙는 클래스들을 사용하려면 반드시 UIkit을 상속해야 한다.

거의 화면을 구성하기 위해 필수적으로 상속해야하는 프레임워크라고 봐도 무방하다.


Foundation

프로그램의 중심을 담당하는 프레임워크.

원시 데이터 타입(String, Int, Double)부터가 Foundation에 포함되어 있기 때문에, 프레임워크를 상속하지 않으면 아무것도 할 수 없다고 볼 수 있다.

그렇다면, Foundation 내에 포함된 클래스들을 알아보자

Foundation 클래스들은 앞에 NS가 주로 붙으며 주로 사용하는 기능들은 다음과 같다.


기본 클래스 기능
Number, Data, String 원시 데이터 타입 사용
Collection Array, Dictionary, Set 등과 같은 컬렉션 타입 사용
Date and Time 날짜와 시간을 계산하거나 비교하는 작업
Unit and Measurement 물리적 차원을 숫자로 표현 및 관련 단위 간 변환 가능
Data Formatting 숫자, 날짜, 측정 값 등을 문자열로 변환 또는 반대 작업
Filter and Sorting 컬렉션의 요소를 검사하거나 정렬하는 작업


애플리케이션 지원 클래스 기능
Resources 애플리케이션의 에셋번들 데이터에 접근 지원
Notification 정보를 퍼뜨리거나 받아들이는 기능 지원
App Extension 확장 애플리케이션과의 상호작용 지원
Error and Exceptions API와의 상호작용에서 발생할 수 있는 문제 상황에 대처할 수 있는 기능 지원


파일 및 데이터 관리 클래스 기능
FIle System 파일 또는 폴더를 생성하고 읽고 쓰는 기능 관리
Archive and Serialization 속성 목록, JSON, 바이너리 파일들을 객체로 변환 또는 반대 작업 관리
iCloud 사용자의 iCloud 계정을 이용해 데이터를 동기화하는 작업 관리


네트워킹 클래스 기능
URL Loading System 표준 인터넷 프로토콜을 통해 URL과 상호작하고 서버와 통신하는 작업
Bonjour 로컬 네트워크를 위한 작업



Reference

  • NamS의 iOS일기
  • sangjin98.log(한상진 공부방)
  • wan088.log

업데이트: