Skip to content

iOS 프레임워크 계층구조와 Cocoa Framework(UIKit, Foundation) #3

@chaneeii

Description

@chaneeii

iOS 프레임워크 계층구조

iOS Unix 기반의 맥 OS X를 기반으로 해서 다윈 커널을 가지고 있는 모바일 OS이다.
iOS OS 레이어기반으로 구성되어있으며

iOS는 아래 층부터 [Core OS]-[Core Service]-[Media]-[Cocoa Touch / MacOS: Cocoa]-[Application] 으로 이루어져 있으며, Core OS로 갈수록 기본이 되는 최하위레이어이고, Cocoa Touch으로 갈수록 그래픽과 interface와 관련된, 사용자와 관련이 있는 최상위레이어다.

ios계층구조 ios계층구조

Application

  • iOS의 가장 바깥 계층으로, Apple App, Third-Party App이 여기에 속한다.
  • 사용자와 가장 맞닿아 있는 계층이다.

Cocoa / Cocoa Touch

  • 사용자가 iOS 운영체제과 일할수있게 하는 인터페이스의 역할을 하는 application layer
  • 화면의 그래픽 UI 및 터치의 기능을 제공
  • 실제로 개발할 때 가장 많이 접하게 되는 계층이다.
  • UIKit(UI구성,터치), MapKit(지도), MessageUI(메세지,이메일) 등의 기능이 있음
    • EvenKit Framework / GameKit Framework / MapKit Framework / PushKit Framework

Media

  • 그래픽이나 오디오, 비디오 등 멀티미디어 기능을 제공
  • C 와 Objectice-C가 혼합되어 있는 상태임
  • AvFoundation(미디어 재생관련), MediaPlayer(플레이어), Core Image(이미지 가공) 등의 기능이 있음
    • ULKit Graphics / Core Graphics Framework / Core Animation / Media Player Framework / AV Kit / Open AL / Core Images / GL Kit

Core Services

  • GPS 나침반, 가속도 센서, 자이로스코프 디바이스 등 하드웨어적 기능들이 속한다.
  • Core OS에서 제공하지 않는 기초적인 기능들을 포함
  • ARC, low-level 네트워크 통신, string 조작, 데이터 포메팅 제공, 내부 데이터/위치/센서/계정관리 등을 사용한 기능 제공
  • 다음과 같은 프레임워크가 포함된다.
    • Core Motion Framework / Framework / Address Book Framework / Cloud Kit Framework / Core Data Framework / Core Foundation Framework / Core Location Framework / Foundation Framework/ HealthKit Framework / HomeKit Framework / Social Framework / StoreKit Framework

Core OS

  • 하드웨어와 가장 가까이 있는 최하위 계층이다.
  • iOS 의 기본이 되는 층으로, 시스템의 핵심기능을 포함하는 기본적인 부분을 관리
  • C 기반의 저수준의 API 로 구성됨
  • 데이터 처리, 네트워크, 파일 접근 등 시스템의 핵심 기능을 포함
  • 다음과 같은 프레임 워크를 포함한다
    • Core Bluetooth Framework / External Accessories Framework / Accelerate Framework / Security Services Framework / Local Authorization Framework etc.

Cocoa Touch Framework

  • 사용자가 iOS 운영체제과 일할수있게 하는 인터페이스의 역할을 하는 application layer
  • 화면의 그래픽 UI 및 터치의 기능을 제공
  • 실제로 개발할 때 가장 많이 접하게 되는 계층이다.

Cocoa Touch 프레임워크는 iOS 개발을 하면서 가장 많이 마주치는 2개의 프레임워크를 포함한다.

import Foundation
import UIKit

UIKit

  • User Interface 를 구현하고 이벤트를 관리하는 프레임워크
  • UIKit 프레임워크는 제스처 처리, 애니메이션, 그림 그리기, 이미지 처리, 텍스트 처리 등 사용자 이벤트 처리를 위한 클래스를 포함한다.
  • 그리고 테이블뷰, 슬라이더, 버튼, 텍스트 필드, 얼럿 창 등 애플리케이션 화면을 구성하는 요소들을 포함한다.
  • UIKit은 iOS와 tbOS플랫폼에서 사용한다.
  • View 와 Control 을 관리한다. 즉, View Controller를 포함한다.
  • UIKit은 Foundation을 상속받고 있어 UIKit 만 import되어도 Foundation 의 내용들을 사용할 수 있다.
  • UIKit 기능별 요소
    • 사용자 인터페이스
      • view and Control : 화면에 콘텐츠 표시
      • view Controller : 사용자 인터페이스 관리
      • Animation and Haptics : 애니메이션과 햅틱을 통한 피드백 제공
      • Window and Screen : 뷰 계층을 위한 윈도우 제공
    • 사용자 액션
      • Touch, Press, Gesture : 제스처 인식기를 통한 이벤트 처리 로직
      • Drag and Drop : 화면 위에서 드래그 앤 드롭 기능
      • Peek and Pop : 3D터치에 대응한 미리보기 기능
      • keyboard and Menu : 키보드 입력을 처리 및 사용자 정의 메뉴 표시

Foundation

  • 원시 데이터 타입, 컬렉션 타입, 운영체제 서비스를 사용해 어플리케이션의 기본적인 기능을 관리하는 프레임워크
  • 구성
    • Fundamentals
      • String, Int, Double, Number, Data - 원시 데이터 타입
      • Array, Dictionary, Set - 컬렉션 타입
      • Date, Time -날짜와 시간을 계산하거나 비교하는 작업
      • Data Formatting - 숫자, 날짜 등을 문자열로 변환 또는 반대 작업
      • Filter, Sorting - 컬렉션 요소를 검사하거나 정렬하는 작업
    • App Support
      • Resource - 에셋과 번들 데이터 접근
      • Notification
      • App Extension
      • Error and Exceptions
    • Files and Data Persistence
      • File System - 파일 또는 폴더를 생성하고 읽고 쓰는 기능
      • Archives, Serialization - 속성 목록, JSON, 바이너리 파일들을 객체로 변환 또는 반대 작업
      • iCloud - 사용자의 iCloud 계정을 이용해 데이터를 동기화하는 작업
    • Networking
      • URL Loading System - 표준 인터넷 프로토콜을 통해 URL과 상호 작용하고 서버와 통신하는 작업
      • Bonjour - 로컬 네트워크

Q. Core Foundation 과 Foundation 의 차이는?
A. 이 둘의 차이는 개발 언어 환경의 차이이다. Foundation 은 Objective-C 프레임워크 이며 Core Foundation 은 C 언어 기반이다. 그리고 Core Foundation 과 Foundation 프레임워크는 모두 Core Service 레이어의 부분이다.

  • App Kit, Core Data 프레임워크, Foundation 은 앱개발을 위한 Core Frame Work (Cocoa Umbrella Framework)) 인 반면, Core Foundation 은 C언어 기반의 programmatic interfaces 로 Core graphics 와 같은 C 기반 프레임워크와의 사용을 위해 고안되었다.
  • Foundation은 Core Foundation 을 기반으로 구현되어있다. 또한 이것이 C기반임에도 불구하고 Core Foundation 은 C보다 더 객체지향적이다.
  • Foundation 과 Core Foundation은 기본 데이터 타입, 데이터 관리 기능들을 제공한다.
  • 나중에 이 차이에 대해 더 확인해보기

Q. Cocoa Touch 의 가장 중요한 2가지는 UIkit 과 Foundation 이라고 한다. 하지만 Foundation Framework는 Core Service 계층에 있다 ?
A. Cocoa (Touch) 는 Layer Stack 전체를 감싸는 우산같은 존재이다. 따라서 Cocoa (Touch) 레이어는 스택 내부의 specific 레이어이며, 이것은 때로 간단하게 Application 전체의 레이어로 언급되기도한다.

주요 프레임워크와 접두어

  접두어 주요 객체
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,...

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    TILToday I LearnediOSiOS 관련내용을 정리합니다

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions