코코아 터치 프레임워크
코코아 터치 프레임워크는 애플 환경에서 터치 기반의 애플리케이션을 제작하기 위한 도구들의 모음이다. 애플리케이션의 다양한 기능 구현에 필요한 여러 프레임워크를 포함하는 최상위 프레임워크 계층이다. 코코아 터치 프레임워크를 이루는 주요 프레임워크에는 다음과 같은 것들이 있다.
- Foundation Framework : 애플리케이션의 핵심 객체와 네트워크, 문자열 처리 등의 서비스를 제공하는 프레임워크
- UIKit Framework : 아이폰이나 아이패드, 애플 워치나 애플TV 등에서 실행되는 애플리케이션의 유저 인터페이스를 제공하는 프레임워크
- GameKit Framework : 게임 실행 시 게임 센터를 연동하거나 근거리 P2P 연결을 제공해주는 프레임워크
- iAd Framework : 앱 내에 배너 형태 또는 팝업 형태의 광고를 삽입할 수 잇도록 해 주는 광고 관련 프레임워크
- MapKit Framework : 위치 정보나 지도 관련 서비스를 이용할 수 있도록 해 주는 프레임워크
- Address Book UI Framework : 번들 애플리케이션으로 제공되는 주소록 앱의 인터페이스와 기능을 커스텀 앱 내에서도 그대로 사용할 수 있도록 해 주는 프레임워크
- EventKit UI Framework : 이벤트 처리에 필요한 유저 인터페이스를 제공하는 프레임워크
- Message UI Framework : 번들 애플리케이션으로 제공되는 메시지 앱의 인터페이스와 기능을 커스텀 앱 내에서도 그대로 사용할 수 있도록 제공하는 프레임워크
- UserNotifications Framework : 사용자 알림을 처리하기 위해 필요한 객체들을 제공하는 프레임워크
- WebKit Framework : 웹 관련 기능을 구현하기 위해 필요한 객체들을 제공하는 프레임워크
위의 프레임워크 중 대부분은 앱을 만드는 데에 필수 요소가 아니다. 하지만 위 목록 중에서 Foundation과 UIKit 프레임워크는 굉장히 방대한 내용을 담고 있을 뿐만 아니라, 앱을 개발하기 위해 반드시 필요한 도구들로서 이 둘을 코코아 터치 프레임워크를 이루는 주 프레임워크로 간주한다.
Foundation 프레임워크는 기본 데이터 형식, 컬렉션 및 앱의 기본 객체와 기반 기술을 제공하는 역할을 하며, UIKit 프레임워크는 유저 인터페이스 도구를 통해 iOS 앱을 구현할 수 있는 방법을 제공한다.
프레임워크의 계층 관계
코코아 터치 프레임워크를 구성하는 작은 단위의 프레임워크들은 계층 관계를 이룬다. 하위 계층의 프레임워크에서 상위 계층의 프레임워크까지 나열되어 있다. 이 중에서 개발자가 주로 프로그래밍에 사용하는 것은 상위 레벨의 프레임워크이다. 여기서 상위 계층이란, 보다 사용자에 가깝고 구체적으로 구현되어 있어서 애플리케이션을 만들 때 가장 손쉽게 사용할 수 있는 형태를 말한다.
반면 하위 계층에 속한 프레임워크는 추상적이면서 하드웨어 쪽에 더 가깝기 때문에 우리가 다루기에는 다소 번거롭다. 똑같은 기능을 구현하더라도 상위 프레임워크를 사용하여 만드는 것보다 더 오래 걸리고, 작은 기능과 구성 하나하나까지 모두 제어해 주어야 한다. 하지만 그만큼 범용적이고 원칙적이기 때문에, 다양한 형태로 확장이 가능하다는 장점이 있다.
대부분의 경우에서 상위 프레임워크는 하위 프레임워크에 의존적이다. 다시 말해 상위 프레임워크에 필요한 기능을 모두 직접 구현하는 것이 아니라, 하위 프레임워크를 통해 구현된 기능에 보다 구체적인 기능만 덧붙여 내놓는 식이다. 하지만 이 과정은 내부적으로 처리되기 때문에 우리는 하위 프레임워크에 직접 접근할 필요가 없다. 단순히 상위 프레임워크가 제공하는 기능을 이용하면 될 뿐이다.
하지만 앱을 개발할 때 전적으로 상위 계층의 프레임워크만 사용하는 것은 아니다. 경우에 따라 상위 레벨의 프레임워크가 제공하지 않는 기능을 구현해야 할 때도 있는데, 이때에는 하위 레벨의 프레임워크를 사용하여 원하는 기능을 직접 구현하기도 한다. 따라서 애플리케이션의 기능을 확장하려면 하위 프레임워크에 대한 구조와 사용 방법까지 충분히 숙지하고 있어야 한다.
iOS 프레임워크의 계층 구조는 다음과 같다.
코어 OS 계층
커널, 파일 시스템, 네트워크, 보안, 전원 관리, 디바이스 드라이버 등이 포함되어 있다. iOS가 운영 체제로서 기능을 하기 위한 핵심적인 영역이라고 할 수 있다.
코어 서비스 계층
이 계층에 속한 프레임워크들은 문자열 처리, 데이터 집합 관리, 네트워크, 주소록 관리, 환경 설정 등 핵심적인 서비스들을 제공한다. 또한 GPS, 나침반, 가속도 센서나 자이로스코프 센서와 같이 디바이스의 하드웨어 특성에 기반한 서비스도 제공한다. 대표적인 것으로 Foundation 프레임워크를 들 수 있으며, Foundation 프레임워크가 내부적으로 의존하는 Core Foundation 프레임워크 역시 이 계층에 포함되어 있다. 이 밖에도 Core Location, Core Motion, Core Animation등이 포함되어 있고, 특히 애플 환경에서 데이터를 저장하기 위해 사용되는 Core Data 프레임워크도 포함되어 있다.
미디어 계층
여기에 속한 프레임워크들은 그보다 하위인 코어 서비스 계층에 의존적이며, 상위 계층인 코코아 터치 계층에 그래픽 관련 서비스나 멀티미디어 관련 서비스를 제공한다. 대표적으로 Core Graphics, Core Text, Core Audio, AV Foundation 등이 있다. 즉, mp4와 같은 비디오 파일을 아이폰에서 재생할 때 미디어 계층이 관여한다고 보면 된다.
코코아 터치 계층
코코아 터치 계층은 애플리케이션 프레임워크 계층이라고도 불리며, 애플리케이션을 직접 지원하는 역할을 담당한다. iOS에 설치되고 실행되는 모든 애플리케이션은 코코아 터치 계층에서 제공하는 여러 가지 기술이나 서비스를 이용하여 기능을 구현하고 동작한다. UIKit 프레임워크가 이 계층에 속해 있으며, Game Kit, Map Kit 등의 프레임워크들 역시 여기에 속한다.
참고
- 「꼼꼼한 재은씨의 SWIFT : 기본편」
'iOS > iOS' 카테고리의 다른 글
[iOS] iOS의 화면 전환 - Navigation Controller를 사용한 화면 전환 (2/3) (0) | 2021.12.03 |
---|---|
[iOS] iOS의 화면 전환 - View Controller 호출 전환 (1/3) (0) | 2021.12.03 |
[iOS] UILabel (0) | 2021.11.28 |
[iOS] UISlider (0) | 2021.11.28 |
[iOS] UIButton (0) | 2021.11.28 |
댓글