Featured image of post Cocoa Touch Framework

Cocoa Touch Framework

Cocoa Touch Framework

싱글턴 디자인 패턴을 공부하던 중, 함께 공부해야 하는 키워드에 Cocoa Touch Framework이 있었다.

❓ 나는 코코아터치도 모르고 싱글턴도 모르는데;;

오늘은 프레임워크와 코코아 / 코코아터치 프레임워크에 대해 전반적으로 알아보자.

Cocoa and Cocoa Touch are the application development environments for OS X and iOS, respectively. Both Cocoa and Cocoa Touch include the Objective-C runtime and two core frameworks:

Cocoa, which includes the Foundation and AppKit frameworks, is used for developing applications that run on OS X.
Cocoa Touch, which includes Foundation and UIKit frameworks, is used for developing applications that run on iOS.

아카이브 된 애플 문서를 보면

CocoaFoundationAppKit 프레임워크를 포함하고 있고, 맥 OS X에서 실행되는 어플리케이션 개발에 사용되고
Cocoa TouchFoundationUIKit 프레임워크를 포함하고 있고, iOS에서 실행되는 어플리케이션 개발에 사용된다고 정의되어 있다.

Framework

“A framework is a hierarchical directory that encapsulates shared resources, such as a dynamic shared library, nib files, image files, localized strings, header files, and reference documentation in a single package.”

일단 프레임워크가 무엇인지 찾아보면, nib 파일, 이미지 파일, localized strings, 헤더 파일, 레퍼런스 문서와 같은 공유 리소스들을 하나의 패키지로 묶어놓은 계층적인 폴더라고 애플 문서에는 정의되어 있다.

라이브러리는 활용가능한 도구들의 집합을 말하는데, 개발자는 라이브러리의 도구를 개발에 이용한다.
Alamofire나 RxSwift, SwiftyJSON 등도 라이브러리라고 할 수 있겠다.

프레임워크와 라이브러리의 차이점은 제어의 흐름에 대한 주도권이 누구에게 있는지로 확인할 수 있다. img 라이브러리는 개발자가 라이브러리를 호출하여 사용할 수 있는데 반해, 프레임워크는 전체적인 흐름의 주도권을 가지고 있어서 프레임워크가 사용자의 코드를 호출한다고 할 수 있다.
이것을 제어의 역전(Inversion Of Control)이라고 한다. 🧐 좀더 공부해보자!

iOS 아키텍쳐

img

이미지 출처: https://www.dotnettricks.com/learn/xamarin/understanding-xamarin-ios-build-native-ios-app

iOS 아키텍쳐에서 가장 상위 레벨의 Cocoa Touch 프레임워크를 사용하여 개발을 구현하게 된다. 우리가 가장 많이 사용하는 Foundation, UIKit 프레임워크도 코코아 터치 프레임워크에 속해있다.

Cocoa Touch

Foundation 프레임워크는 데이터 저장 및 지속성, 텍스트 처리, 날짜 및 시간 계산, 정렬 및 필터링, 네트워킹을 포함하여 앱 및 프레임워크를 위한 기본 기능 계층을 제공한다.

UIKit 프레임워크는 iOS 인터페이스 그래픽을 구성하는 도구를 포함하고 이벤트를 처리하는 프레임워크이다.
인터페이스를 구현하기 위한 창 및 보기 아키텍처, Multi-Touch 및 기타 유형의 입력을 앱에 제공하기 위한 이벤트 처리 인프라, 사용자, 시스템 및 앱 간의 상호 작용을 관리하는 데 필요한 기본 실행 루프를 제공한다.

Reference

Apple - What are Frameworks?
Apple - Cocoa
Apple - Foundation
Apple - UIKit
stackoverflow - What is the difference between a framework and a library?
Framework vs Library
소들이 블로그- Cocoa / Cocoa Touch