From 8f887d1b4226529072fab941599d2d6916fc38ee Mon Sep 17 00:00:00 2001 From: Hyeongseok Kim <102458207+NeoSelf1@users.noreply.github.com> Date: Thu, 2 Jan 2025 04:41:33 +0900 Subject: [PATCH] update: 12-Dependency Manager --- LEVEL 1/12-Dependency Manager | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LEVEL 1/12-Dependency Manager diff --git a/LEVEL 1/12-Dependency Manager b/LEVEL 1/12-Dependency Manager new file mode 100644 index 0000000..b7ee186 --- /dev/null +++ b/LEVEL 1/12-Dependency Manager @@ -0,0 +1,21 @@ +issue #14 + +## 12. Dependency Manager +### 의존성 관리 도구(CocoaPods, Carthage, Swift Package Manager)의 종류와 차이점은 무엇인가요? +의존성 관리 도구는 iOS 프로젝트에서 외부 라이브러리를 효율적으로 관리하기 위한 필수적인 도구입니다. +#### 각 도구의 사용 방법과 장단점을 설명해주세요. +- CocoaPods은 가장 오래되고 널리 사용되는 도구로, Ruby 기반으로 동작합니다. Podfile에 필요한 라이브러리를 명시하고 'pod install' 명령어로 쉽게 설치할 수 있습니다. +하지만 별도의 워크스페이스를 생성하고 빌드 시간이 늘어날 수 있다는 단점이 있습니다. +- Carthage는 CocoaPods보다 가벼운 의존성 관리 도구입니다. 프레임워크를 직접 빌드하여 프로젝트에 통합하는 방식을 사용하며, 프로젝트 구조를 변경하지 않는다는 장점이 있습니다. 다만 수동으로 프레임워크를 연결해야 하는 번거로움이 있습니다. +- Swift Package Manager(SPM)는 Apple이 공식적으로 제공하는 도구로, Xcode에 기본 통합되어 있습니다. 별도의 설치가 필요 없고 Swift 프로젝트에 최적화되어 있습니다. +하지만 상대적으로 새로운 도구이기 때문에 지원하는 라이브러리가 적을 수 있습니다. + +*** +#### 의존성 관리를 통해 얻을 수 있는 이점은 무엇인가요? +CocoaPods의 Podfile과 같이 사용하는 외부 라이브러리들에 대한 구체적인 버전을 명시하기 때문에, 협업 간에 동일한 개발환경에서 개발이 가능해집니다. +각 의존성 관리 도구별로 업데이트를 위한 편리한 기능들을 제공합니다. 예를 들어 CocoaPod의 경우 pod install 명령어가 있습니다. 이로안해 모든 의존성의 업데이트 관리가 용이해집니다. + +*** +#### 라이브러리와 프레임워크 간의 차이점은 무엇인가요? +두 개념의 가장 큰 차이점은 주도권이 누구에게 있느냐입니다. +프레임워크 React Native와 같이 스스로 제어 흐름의 주도성을 갖고 있지만, 라이브러리의 경우 개발자가 주도성을 갖고 제어 흐름을 제어합니다.