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.
아카이브 된 애플 문서를 보면
Cocoa는 Foundation
과 AppKit
프레임워크를 포함하고 있고, 맥 OS X에서 실행되는 어플리케이션 개발에 사용되고
Cocoa Touch는 Foundation
과 UIKit
프레임워크를 포함하고 있고, 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 등도 라이브러리라고 할 수 있겠다.
프레임워크와 라이브러리의 차이점은 제어의 흐름에 대한 주도권이 누구에게 있는지로 확인할 수 있다.
라이브러리는 개발자가 라이브러리를 호출하여 사용할 수 있는데 반해, 프레임워크는 전체적인 흐름의 주도권을 가지고 있어서 프레임워크가 사용자의 코드를 호출한다고 할 수 있다.
이것을 제어의 역전(Inversion Of Control)
이라고 한다. 🧐 좀더 공부해보자!
iOS 아키텍쳐
이미지 출처: 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