Cocoa Touch Framework

김세영·2021년 7월 27일
0

기타 정리

목록 보기
1/4
post-thumbnail

UIKit

iOS 개발을 하다 보면, UILabel, UIButtonUI***의 형식을 가지는 클래스들이 존재합니다.
또한 프로젝트를 새로 생성하면, 기본 ViewController.swift 파일에 다음과 같은 구문이 작성되어 있습니다.

import UIKit

class ViewController: UIViewController { ... }

하지만 이 클래스들을 단일 *.swift 파일이나 플레이그라운드에 입력해보면
존재하지 않는 클래스라는 오류가 등장하게 됩니다.

UI*** 형식의 클래스들은 모두 UIKit 프레임워크에 구현되어 있습니다.

다시 말해, 이 클래스들은 스위프트 자체의 기능이 아닌
UIKit 프레임워크에서 제공하고 있는 클래스라는 뜻입니다.

따라서 스위프트 파일에서 이 클래스들을 사용하기 위해선,
여타 다른 프로그래밍 언어와 같이 프레임워크를 사용한다고 코드에 알려 주어야 합니다.
이 때 사용되는 키워드가 import입니다.

UIKit에는 앱을 구성하는 UILabel, UIButton 등 여러 가지 클래스들이 정의되어 있습니다.
Apple Developer: https://developer.apple.com/documentation/uikit/

여러 종류의 프레임워크

앱을 만들 때 사용되는 프레임워크는 UIKit 말고도 다양한 것들이 있습니다.

Foundation

데이터 유형이나 컬렉션, 날짜와 시간, 네트워크 기능 등
필수적이고 기초적인 기능들을 모아 놓은 프레임워크입니다.

UserNotification

푸시 알림, 서버 알림 등 알림과 관련된 기능을 모아 놓은 프레임워크입니다.

MapKit

위치 정보, 지도 관련 기능을 이용할 수 있도록 해 주는 프레임워크입니다.

이 외에도 많은 프레임워크들이 존재합니다.
하지만 앱을 만들 때, 이 프레임워크들을 모두 사용하는 것이 아니기 때문에 XCode에서는
UIKit, Foundation을 제외하고 프레임워크들을 사용할 때 별도의 설정을 해야 합니다.

최근에는 별도의 설정 없이 import 구문만으로 반입할 수 있도록 수정되었다고 합니다.

코코아 프레임워크, 코코아 터치 프레임워크

먼저 코코아 프레임워크는 macOS(OS X) 앱을 개발하기 위한 프레임워크입니다.
맥을 사용하면 꼭 보게 되는, 왼쪽 위 제어 버튼은 코코아 프레임워크의
NSWindow라는 객체의 기능 중 하나라고 합니다.

코코아 터치 프레임워크는 이름에서 알 수 있듯이,
애플의 터치 기반 기기의 앱을 개발할 때 사용되는 프레임워크입니다.
이 프레임워크는 코코아 프레임워크를 기반으로 만들어졌기 때문에 꽤 많은 부분을 공유합니다.

보통 앱을 개발할 때에는 코코아 터치, 파운데이션 프레임워크 등으로 개발이 가능하지만,
내부적으로 하드웨어에 가까운 하위 프레임워크가 존재합니다.
iOS의 프레임워크 계층 구조는 다음과 같습니다.

출처: https://livebook.manning.com/book/ios-development-with-swift/chapter-1/8

Core OS

iOS가 운영 체제의 기능을 할 수 있도록 하는 중요한 계층입니다.
커널, 파일 시스템, 보안, 전원 관리, 네트워크 등을 관리합니다.

Core Service

이 계층은 문자열 처리, 컬렉션, 주소록 관리, 네트워크, 환경 설정 등
핵심적인 서비스들을 제공합니다.
위에서 설명한 Foundation 프레임워크도 이 계층입니다.
이 밖에도 Core Motion, Core Location, Core Animation, Core Data
등이 속해 있는 계층입니다.

Media

이 계층은 다음에 나올 상위 계층인 Cocoa Touch 계층에
멀티미디어, 그래픽 관련 서비스를 제공합니다.
대표적으로 AVFoundation이 있으며,
Core Graphics, Core Text, Core Audio 등이 속해 있습니다.

Cocoa Touch

애플리케이션을 직접 지원하는 계층입니다.
iOS의 모든 앱들은 이 계층에서 제공하는 서비스들을 이용하여 작동합니다.
UIKit 프레임워크가 속해 있으며,
GameKit, MapKit 등이 속해 있습니다.

접두어의 의미

개발을 하다 보면, NSData, UIButton, UNNotification, CGFloat, AVAudioConverter
공통적으로 객체 이름에 대문자 접두어가 붙어 있습니다.
코코아 터치 프레임워크에는 자신들이 속한 프레임워크를 기준으로 접두어가 붙어 있습니다.

프레임워크접두어객체
FoundationNS (Next Step)NSData, NSDate, NSArray, NSURL, NSString, NSException, ...
UIKitUIUILabel, UIButton, UIView, UIViewController, UIApplication, ...
UserNotificationsUNUNNotification, UNNotificationContent, UNNotificationResponse, ...
Core FoundationCFCFBundle, CFDate, CFError, CFBoolean, ...
Core GraphicsCGCGFloat, CGRect, CGLayer, CGPoint, CGAffineTransform, ...

이 외에도 많은 프레임워크들 각각에 접두어가 붙어 있습니다.

profile
초보 iOS 개발자입니다ㅏ

0개의 댓글