Cocoa Touch 프레임워크

이숭인·2021년 7월 17일
0

코코아 (Cocoa)

Cocoa 라는 단어는 NSObject를 상속받는 모든 클래스, 객체들을 가리킬때 사용하는 단어다.

당시 지금이상으로 핫했던 언어인 Java가 커피원산지에서 따온 이름이기 때문에,

애플 개발자는 어린아이도 할 수 있는 자바(Java for kids)라는 의미에서 코코아라고 이름지었다고 한다.😅

코코아 터치 (Cocoa Touch)

코코아 터치 프레임워크란 iOS개발 환경을 구축하기 위한 최상위 프레임워크다.

일반적으로 사용하는 Object-C 혹은 Swift 에서 상속하여 사용하는 UIKit, Foundation 을 포함한 클래스, 객체들이 코코아 터치 프레임워크에 속해있다.


UIKit

UI(User Interface)라는 이름에서 알 수 있듯이, UIKit 프레임워크는 사용자의 인터페이스를 관리하고, 이벤트를 처리하는게 주 목적인 프레임워크다.

UIkit에서 주로 처리하는 사용자 이벤트로는 제스처 처리, 애니메이션, 그림 그리기, 이미지 처리, 텍스트 처리 등이 있다.

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

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

화면을 구성하기 위해서 필수적으로 상속해야하는 프레임워크 !!


Foundation

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

사실 가장 기본적인 원시 데이터 타입(String, Int, Double)부터가 Foundation에 포함되어있기 때문에, 가장 중요한 프레임워크 중 하나.

Foundation 내에 포함된 클래스들은 앞에 NS가 붙는다.


프레임워크의 계층구조

import UIKit

var str1: String
var integer1: Int

만약 위와 같은 코드를 작성하기 위해선 원시 데이터 타입을 제공해주는 Foundation을 import해야 한다.

그렇다면 위의 코드에서 Foundation을 import 하지 않았으니 에러가 나는가??

놉. 정상적으로 실행된다.

아래 계층구조를 보자

기본적으로 코코아 프레임워크는 위와같은 계층구조를 갖는다.

하위 계층일수록 하드웨어에 친화적이고, 상위 계층일 수록 사용자 친화적이다.

이 중 UIKit은 가장 위인 Cocoa Touch 계층이고 Foundation은 그보다 두단계 아래인 Core Service 계층이다. 그렇기 때문에 UIkitFoundation 프레임워크를 상속했을 가능성이 높다.

결과적으로 UIkit을 상속하는 것 만으로, Foundation도 함께 상속한 결과를 내는 것이다.

각 계층에 포함된 프레임워크들은 다음과 같다.

Cocoa Touch 계층

하위 계층의 프레임워크를 사용하여 애플리케이션을 직접 구현하는 프레임워크.
UIKit, GameKit, MapKit

Media 계층

상위 계층인 코코아 터치 계층에 그래픽 관련 서비스나 멀티미디어 관련 서비스를 제공
Core Graphics, Core Text, Core Audio, Core Animation, AVFoundation

Core Service 계층

문자열 처리, 데이터 집합 관리, 네트워크, 주소록 관리, 환경 설정 등 핵심적인 서비스들을 제공.
또한 GPS, 나침반, 가속도 센서나 자이로스코프 센서와 같이 디바이스의 하드웨어 특성에 기반한 서비스도 제공.
Foundation, Core Foundation, Core Location, Core Motion, Core Animation, Core Data

Core OS 계층
커널, 파일 시스템, 네트워크, 보안, 전원 관리, 디바이스 드라이버 등이 포함
iOS가 운영 체제로서 기능을 하기 위한 핵심적인 영역


자 그럼 다시 본론으로 돌아와서 UIKit의 내부를 한번 살펴보자

UIKit의 내부에 들어오자마자 가장 먼저 보이는게 import Foundation.

UIKit이 Foundation을 상속하고 있기 때문에 Foundation 상속을 하지 않아도 위의 코드에서는 에러가 발생하지 않는다!

profile
iOS Developer

0개의 댓글