ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Cocoa Framework vs Cocoa Touch Framework 차이점
    🧑‍💻/Objective C 2021. 5. 4. 21:50
    반응형

    이름은 비슷하지만 크게 다른 Cocoa Framework와 Cocoa Touch Framework의 차이를 비교해 보겠습니다.



    Cocoa Framework

    macOS 앱 개발에 쓰이는 Cocoa Framework 개념이 먼저 나오고, 이후 iOS 환경에 맞춘 Cocoa Touch Framework가 생겼습니다.
    실제로 Cocoa.framework의 정의를 살펴보면 다음과 같습니다.

    import AppKit
    import CoreData
    import Foundation


    AppKit, CoreData, Foundation에 대해 알기 위해서는 macOS의 기초 구성 계층도를 먼저 이해해야 합니다.

    macOS를 구성하는 계층은 5가지로 나뉩니다.

    1. Cocoa (Application) : 앱의 사용자 인터페이스를 구성할 수 있습니다. 사용자 이벤트에 대한 응답이나 앱의 행동을 관리합니다.
    2. Media : 재생, 녹음, 편집 등 미디어와 2D, 3D 그래픽을 다루는데 사용됩니다.
    3. Core Services : low-level 네트워크 통신, 문자열 조작 및 데이터 형식까지 기초적인 서비스를 포함합니다.
    4. Core OS : CPU, GPU 등 하드웨어와 네트워크와 관련된 인터페이스를 정의합니다.
    5. Kernel and Device Drivers : 드라이버, BSD 라이브러리 등 low-level 구성 요소 등 Mach Kernel 환경을 구성합니다.

    여기서 다시 Cocoa.framework에 속한 프레임워크를 살펴보면,

    • AppKit (Cocoa 계층) : Foundation.framework에 직접적인 의존성을 가집니다.
    • Foundation (Core Services 계층) : 데이터 관리, 파일접근, 네트워크 통신 등 low-level 특징의 클래스를 포함합니다.
    • Core Data (Core Services 계층) : MVC 디자인 패턴의 데이터 모델을 관리하는 클래스를 포함합니다.

     

    Cocoa.framework는 Objective-C를 기반으로 만들어졌습니다. 네임스페이스가 없기 때문에 Foundation.framework에 속한 클래스 명의 충돌을 막기 위해 NS를 붙이도록 규칙을 정했습니다. macOS Cocoa Class의 서브클래스 목록을 펼쳐 Cocoa.framework의 클래스들을 살펴볼 수 있습니다.

     



    Cocoa Touch Framework

    Cocoa Touch Framework는 iOS의 다양한 기능을 구현하는데 필요한 여러 프레임워크를 결합한 최상위 프레임워크입니다.
    macOS UI 개발 시 쓰이는 AppKit와 구분하기 위해 UIKit에서는 클래스 이름이 UI로 시작합니다.

    1. UIKit
    2. Foundation
    3. Core Data
    4. MapKit
    5. Core Animation


    Swift 파일을 생성하면 import Foundation, Cocoa Touch Class 파일을 생성하면 import UIKit이 기본으로 추가됩니다.
    Cocoa Touch는 Foundation보다 높은 계층이기 때문에 하위 계층인 Foundation을 import 하여 사용하고 있습니다.

    import Foundation
    import UIKit.DocumentManager
    import UIKit.NSAttributedString
    import UIKit.NSDataAsset
    import UIKit.NSDiffableDataSourceSectionSnapshot
    ....


    macOS와 마찬가지로 iOS도 Cocoa Touch Class의 서브클래스 목록을 펼쳐 클래스 종류를 확인할 수 있습니다.

     


    Cocoa vs Cocoa Touch

    위 내용을 보면 Cocoa (AppKit, UIKit) 이외에는 모두 비슷한 계층을 구성하고 있음을 알 수 있습니다.
    따라서 iOS -> macOS 마이그레이션 시,

    • 데이터 모델이 Foundation, Core Foundation 프레임워크를 기반으로 한다면 쉽게 변경할 수 있습니다.
    • 데이터 모델이 Core Data 위에 구축된 경우 쉽게 변경할 수 있습니다.


    iOS와 달리 macOS Foundation에서만 지원하는 몇가지 기능이 있습니다.

    1. Spotlight : 파일 메타 데이터를 사용하여 컴퓨터 정보를 구성하고 접근하는 기술
    2. Cocoa binding : 모델링 된 데이터 항목과 뷰 사이를 연결할 수 있는 기술
    3. AppleScript : 스크립트 명령을 수행할 수 있는 기술
    4. Distributed Objects Programming : Cocoa 앱 객체에 메시지를 보낼 수 있는 기술


    참고

     

    반응형

    댓글

Designed by Tistory.