[iOS] Static/Dynamic Framework란?

목차


  1. Tuist란? 설치해보자
  2. ✅ Static/Dynamic Framework란?
  3. Tuist를 정복해보자!!

Xcode에서의 Static Framework와 Dynamic Framework

iOS 개발에서 프레임워크는 코드와 리소스를 모듈화하고 재사용 가능한 형태로 패키징하는 중요한 도구입니다.
Xcode에서는 주로 두 가지 유형의 프레임워크를 사용하는데, 바로 Static Framework와 Dynamic Framework입니다.

Static Framework

Static Framework는 컴파일 시점에 앱의 실행 파일에 직접 포함되는 프레임워크입니다.

  • 특징
    • 앱의 실행 파일에 코드가 직접 복사됩니다.
    • 런타임 속도가 빠릅니다.
    • 앱 크기가 증가할 수 있습니다.
    • 메모리 사용량이 더 많습니다.
    • 프레임워크 업데이트 시 앱 전체를 다시 컴파일해야 합니다.

Dynamic Framework

Dynamic Framework는 런타임 시 필요할 때 로드되는 프레임워크입니다.

  • 특징
    • 앱 실행 시 필요할 때 로드됩니다.
    • 여러 앱에서 공유가 가능합니다.
    • 앱 크기를 줄일 수 있습니다.
    • 메모리 사용이 효율적입니다.
    • 프레임워크 업데이트가 더 용이합니다.

Static Linker

Static Linker는 컴파일된 오브젝트 파일들을 하나의 실행 파일로 결합하는 도구입니다.
Static Framework를 사용할 때, Static Linker는 다음과 같은 역할을 수행합니다.

  • 프레임워크의 코드를 앱의 실행 파일에 직접 포함시킵니다.
  • 외부 심볼 참조를 해결하고 필요한 코드만 포함시킵니다.
  • 링킹 과정에서 불필요한 코드를 제거하여 최적화합니다.

Static Linker의 작업으로 인해 앱의 실행 파일 크기는 커질 수 있지만, 런타임 시 추가적인 로딩 과정이 필요 없어 실행 속도가 빠릅니다.

Mach-O (Mach Object File Format)

Mach-O는 macOS와 iOS에서 사용되는 실행 파일, 오브젝트 코드, 공유 라이브러리 등을 위한 파일 형식입니다.
Mach-O 파일은 다음과 같은 특징을 가집니다.

  • 헤더: 파일 유형, 타겟 아키텍처 등의 기본 정보를 포함합니다.
  • 로드 커맨드: 동적 링커에게 어떻게 파일을 메모리에 매핑할지 지시합니다.
  • 데이터: 실제 코드와 데이터 세그먼트를 포함합니다.

Static Framework와 Dynamic Framework 모두 Mach-O 형식을 사용하지만, 그 구조와 사용 방식에 차이가 있습니다.

  • Static Framework: 최종 앱의 Mach-O 파일에 프레임워크 코드가 직접 포함됩니다.
  • Dynamic Framework: 별도의 Mach-O 파일로 존재하며, 런타임 시 동적으로 로드됩니다.

차이점

두 프레임워크 유형의 주요 차이점을 비교해보면 다음과 같습니다.

특성 Static Framework Dynamic Framework
링킹 시점 컴파일 시 런타임 시
앱 크기 더 큼 더 작음
로딩 속도 빠름 상대적으로 느림
메모리 사용 더 많음 효율적
공유 가능성 불가능 가능
업데이트 용이성 낮음 높음
Mach-O 구조 앱 실행 파일에 포함 별도의 파일로 존재

결론

  • Static Framework는 앱에 직접 포함되어 빠른 실행을 제공하지만 앱 크기가 커질 수 있습니다.
    반면 Dynamic Framework는 필요할 때 로드되어 메모리를 효율적으로 사용하고 여러 앱에서 공유할 수 있지만, 초기 로딩 시간이 더 걸릴 수 있습니다.

  • 프로젝트의 요구사항과 특성에 따라 적절한 프레임워크 유형을 선택하는 것이 중요합니다.
    작은 규모의 프로젝트나 빠른 실행 속도가 중요한 경우 Static Framework가 유리할 수 있으며, 큰 규모의 프로젝트나 여러 앱에서 공유해야 하는 경우 Dynamic Framework가 더 적합할 수 있습니다.

  • Static Linker와 Mach-O에 대한 이해는 iOS 개발에서 프레임워크를 효과적으로 사용하고 앱의 성능을 최적화하는 데 도움이 됩니다.
    이러한 개념들을 잘 활용하면 더 효율적이고 유지보수가 용이한 앱을 개발할 수 있습니다.