0408(월) Swift Library VS Framework - hwj0623/ios_swift GitHub Wiki

출처 - Minjun iOS, iOS에서 프레임워크와 라이브러리의 차이점을 알아보자!

원문 출처 - Framework vs Library(Static & Shared) in Cocoa/OSX, Cocoa Touch/iOS

요약

  • 라이브러리와 프레임워크의 차이에 대한 서술은 Java의 그것과 다르지 않다.
  • 결국 제어의 흐름의 소유를 개발자(혹은 api caller)가 쥐고 있느냐, 프레임워크가 소유하고 있는가에 따라 구분할 수 있겠다.
  • 비유를 하자면 다음과 같다.
- 국가 : 프레임워크
- 회사 : Application
- 퀵 서비스, 회계, 구청, 세무서, 소방서, 우체국 .. : API (프레임워크에 속한 클래스, 구조체 등)
- 회사 내 직원 : Library

Library

  • 프로그램이 연결할 수 있는 패키징된 파일들의 모음
  • 정적 라이브러리공유 라이브러리로 나뉜다.
  • UIKit 등 Swift Framework 내에 존재하는 대상들을 라이브러리라고 일컫지는 않는다.
    • cf. WinOS의 DLL(Dynamic Load Library)는 동적으로 링크시에 참고하는 외부 라이브러리를 일컬음
  • Swift Standard Library는 라이브러리인가? 프레임워크에 속하나?
    • 의견 : "표준"으로 채택된 라이브러리. 비표준 라이브러리로 개발도 가능하지만... 그 외부라이브러리의 기술지원 주체가 "애플"일 뿐 정적 라이브러리(Static Library)
  • 주된(main) 실행파일의 코드에 패킹되어 있음

공유 라이브러리(Shared Library)

  • 링커(The linker)는 단지 라이브러리의 참조만 저장한다.
  • 그 자체는 주된(main) 실행파일에 패키징 되어 있지 않다.

Framework

  • Libraries only has executable code. A framework is a bundle (Directory structure) that contains shared libraries as well as sub directories of headers and other resources
  • 어떤 환경 내에서 Application이 자생적으로 동작할 수 있도록 하는 기반(infra)의 개념에 가깝다.