BOID

[iOS] 프레임워크 계층 관계 본문

IOS 시작기

[iOS] 프레임워크 계층 관계

HoonIOS 2021. 3. 17. 10:25

안녕하세요 HoonIOS입니다 :)

저번에는 프레임워크, 코코아 터치 프레임워크를 알아봤습니다.

 

혹시 안 보셨다면 여기를 누르셔서 읽어보고 오시는 걸 추천드립니다 :)

 

프레임 워크 계층 관계에 대해

- 코코아 프레임워크나 코코아 터치 프레임워크를 구성하는 가장 작은 단위의 프레임워크들은 계층 관계를 이룬다고 합니다.

- 우리가 주로 프래그래밍에 사용하는 것은 상위 레벨의 프레임워크들로, 프레임워크에서 상위계층에 해당합니다.

  • 여기서 말하는 상위 계층이란?
    - 보다 사용자에 가깝고 구체적으로 구현되어 있어서 애플리케이션을 만들때 가장 손쉽게 사용할 수 있는 형태를 말한다, 이런 형태를 구체화되어있다고 표현을 합니다.

 

- 이제 하위계층을 알아보자면 하위계층에 속한 프레임워크는 추상적이면서 하드웨어 쪽에 더 가까워 우리가 다루기가 좀 여럽습니다. 왜냐하면 똑같은 기능을 구현해도 상위 프레임워크보다 하위 프레임워크가 몇 배 더 올래 걸리고 작은 기능, 구성 하나하나까지 모두 제어를 해 주어야 하기 때문입니다.

- 이런 복잡한 부분이 있지만, 하위계층의 장점은 범용적이고 원천적이기 때문에, 다양한 형태로 확장이 가능하다는 것이 있습니다. 하나하나 제어를 해주어야 하기 때문에 더 많은것을 다양하게 만들 수 있겠죠?

 

* 혹시 이게 무슨말이야 하실 수 있으시지만 아래에 iOS프레임워크 계층을 두고 설명할 테니깐 그냥 그렇구나 하고 읽어보시는 걸 추천드려요!

 

- 예를들어서 생각해봅시다 만약 책상을 만든다고 하면 상위계층은 책상 나무, 철 이런 게 필요한데 만들어진 부품을 사고 와서 조립하는 것만으로 간단하게 책상을 만들 수 있습니다. 

반면, 하위계층은 나무 판을 만들기 위해서 합판, 접착제, 페인트같은 도구들만 이용해서 직접 만들고 철판도 찍어내어 직접 만들어야 한다면 제한이 없고 원하는 디자인, 색상을 이용하여 만들 수 있겠죠?

 

- 상위 계층은 하위 계층에 의존적이라고 할수 있습니다. 이 말은 즉 상위 프레임워크에 필요한 기능을 모두 직접 구현하는 것이 아니라 하위 프레임워크를 통해 구현된 기능에 보다 구체적인 기능만 덧붙여 내놓은 식입니다.

- 우리가 직접 애플리케이션을 개발할때 상위계층의 프레임워크만 사용하는 게 아니라 경우 따라 상위 레벨의 프레임워크가 제공하지 않는 기능을 구현하지 않고, 하위 레벨의 프레임워크가 제공하지 않는 기능을 구현할 할 때도 있습니다.

이때에는 하위 레벨의 프레임워크를 사용하여 원하는 기능을 직접 구현해주면 됩니다.

 

프레임워크 계층

프레임워크 계층

- 하위계층부터 알아보겠습니다.

  • 코어 OS 계층
    - 이 계층에는 커널, 파일 시스템, 네트워크, 보안, 전원 관리, 디바이스 드라이버 등이 포함되어 있습니다.
    - iOS가 운영체로서 역할을 하기 위한 핵심적인 영역입니다.
  • 코어 서비스 계층
    - 이계층에 속한 프레임워크들을 문자열 처리, 데이터 집합 관리, 네트워크, 주소록 관리, 환경설정, 등 핵심적인 서비스를 제공합니다. 또 GPS, 나침판같이 디바이스의 하드웨어 특성에 기반한 서비스를 제공한다.
    - 대표적인것으로 양대산맥 프레임워크 중 하나인 파운데이션 프레임워크를 들 수 있습니다.
    - 특히 애플 환경에서 데이터를 저장할 수 있게 사용되는 Core Data가 이 계층에 해당합니다.
    (이건 추후에 포스팅할 거예요!!)
  • 미디어 계층
    - 이보다 하위인 코어 서비스 계층에 의존적이며, 상위 계층인 코코아 터치 계층에 그래픽 관련 서비스나 멀티미디어 관련 서비스를 제공합니다.
    - 미디어 사용할 때 쓰는 프레임워크인 AV파운데이션이 여기에 해당합니다.
    - mp4와 비디오와 같은 파일을 아이폰에서 재생할 때 미디어 계층이 관여한다고 보면 됩니다.
  • 코코아 터치 계층
    - 애플리케이션 프레임워크 계층이라고 불리고, 애플리케이션을 직접 지원하는 역할을 담당한다.
    - UIKit프레임워크가 여기에 해당합니다 

- 위 프레임워크 계층을 보시면 아시겠지만 iOS 프레임워크 계층은 하드웨와 애플리케이션 사이를 중계하는 위치에 구성되어있습니다.

- 하드웨어와 직접 커뮤니케이션할 수 없는 애플리케이션이 몇 줄의 코드를 통해 하드웨어 장치를 구동할 수 있는 이유는 이 같은 프레임워크 계층을 통해 간접적으로 하드웨어를 제어할 수 있기 때문이다.

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

아래 표를 한번 살펴보겠습니다 :)

  접두어 주요 객체
Foundation Framework NS NSDate, NSData, NSRange...
UIKit Framework UI UIViewController,UIView,UIButton...
UserNotifications Framework UN UNNotificationContentm,UNNotificationRequest,...
MapKit Framework MK MKAnnotaionView,...
Core Foundation CF CFData, CFDate, CFError,...
Core Graphics CG CGColor, CGPoint, CGRect,...
AVFoundation AV AVAssetReader,AVAudioEngine,...

- 위 프레임워크 표를 보시만 아시겠지만 객체 앞에 접두어를 통해 어떤 프레임워크를 쓰는지 알 수 있겠죠?

 

 

지금까지 프레임워크 계층 관계, 그다음 접두어를 통해 객체들이 어떤 프레임워크를 쓰는지 확인하는 방법에 대해 알아보았습니다.

 

다음 시간에는 iOS 유저 인터페이스의 표현구조인 윈도우, 뷰 객체, 컨트롤러에 대해 알아보겠습니다.

 

오늘 하루도 좋은 하루 보내세요 긴 글 읽어주셔서 감사합니다 :)

반응형
Comments