📚 라이브러리 (Library)
✅ 개념
• 하나의 기능에 집중된 코드 집합
• Swift/ObjC로 작성되며, 보통 .a, .dylib, .swiftmodule 등으로 존재
✅ 장점
• 빠른 적용: 필요한 기능만 가져와서 바로 사용 가능
• 가볍고 효율적: 프레임워크보다 상대적으로 무겁지 않음
• 재사용성: 다양한 앱에서 동일한 기능을 쉽게 재사용
❌ 단점
• 모듈화 부족: UI, 리소스 같은 것 포함 어렵거나 별도로 관리해야 함
• 버전 충돌 위험: 여러 라이브러리가 같은 의존성을 사용할 경우 충돌 가능
✅ 종류
1. 정적 라이브러리(Static Library)
- .a 확장자
- 컴파일 타임에 앱에 통합한다.(‼️앱의 바이너리 크기 증가)
- 런타임 의존성이 없어서, 성능이 좋다.
2. 동적 라이브러리(Dynamic Library)
- .dylib, .framework 타입
- 런타임에 로드되어 로딩시간이 증가한다(‼️성능 문제 발생)
- AppStore에 정책 제약때문에 대부분의 심사에서 거절당한다.
- 모든 코드가 검증 가능하고 고정되어야한다.
- 모든 코드가 정적인 번들 안에 포함되어야 한다.
🧱 프레임워크 (Framework)
✅ 개념
• 코드뿐 아니라 리소스(이미지, xib), 메타데이터, 헤더 등을 포함하는 완성도 높은 재사용 단위
• Static or Dynamic, .framework or .xcframework 형식
✅ 장점
• 모듈화: 코드, UI, 리소스를 하나로 묶어서 배포 가능
• 확장성: 기능별로 프레임워크를 나눠서 구조화할 수 있음
• 캡슐화: 내부 구현을 숨기고, API만 외부에 공개
❌ 단점
• 학습 곡선: 프로젝트 구조와 설정이 복잡할 수 있음
• 앱 사이즈 증가 가능성: 동적 연결 시 로딩 시간 고려 필요
📦 패키지 (Package, SPM)
✅ 개념
• Swift Package Manager(SPM)를 통해 코드를 모듈 단위로 배포/관리하는 방식
• Swift 5 이후 공식 지원 → .package(url:...) 형태로 통합 가능
✅ 장점
• 간편한 의존성 관리: 버전 지정, 자동 설치
• 정확한 모듈화: 기능 단위로 패키지 관리 가능
• 공식 통합 도구: Xcode와 원활하게 작동
❌ 단점
• 지원 제한: Xcode 11 이하에선 지원 안 됨
• 배포 방식 제한: 일부 외부 리소스 관리가 복잡할 수 있음
Swift 생태게에서 오픈소스 라이브러리들은 어떻게 배포될까??
결론만 말하면 앞에 3가지를 모두 사용한다.
1. 기능을 구현한 라이브러리 코드 작성
2. 프레임워크 구조로 감쌈
3-1. Swift Package Manager(SPM)으로 패키징
3-2. CocoaPods(패키징 시스템)을 통한 설치
'Swift' 카테고리의 다른 글
Apple Push Notification 설정(2) (1) | 2024.09.01 |
---|---|
Apple Push Notification 설정(1) (0) | 2024.08.25 |
[Swift] Privacy Info (0) | 2024.08.18 |
<Value Type> Set (1) | 2024.03.03 |
14. UI Test (0) | 2022.12.31 |