BOID
[iOS] 프레임워크 계층 관계 본문
안녕하세요 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 유저 인터페이스의 표현구조인 윈도우, 뷰 객체, 컨트롤러에 대해 알아보겠습니다.
오늘 하루도 좋은 하루 보내세요 긴 글 읽어주셔서 감사합니다 :)
'IOS 시작기' 카테고리의 다른 글
[iOS] 뷰 컨트롤러의 상태 변화와 생명주기 (0) | 2021.03.19 |
---|---|
[iOS] 뷰컨트롤러란? (0) | 2021.03.18 |
[iOS] 인터페이스의 표현 구조(윈도우, 뷰, 뷰컨트롤러에 대해) (0) | 2021.03.18 |
[iOS] 코코아 터치 프레임워크란? (0) | 2021.03.14 |
안녕하세요:) 개린이의 IOS 시작기입니다 (0) | 2021.02.01 |