프로젝트를 만들다 보면 구현하고 싶은 기능이 xcode와 swift언어에서 기본 제공하는 도구만으로서는 시간이 많이 걸리고 어려울 때가 있다. 그럴 때에 외부 라이브러리를 사용하면 시간이 단축되고 버그가 적은 성능좋은 코드를 사용할 수 있다.
이 때에 외부 라이브러리를 프로젝트에 통합하고 관리하기 위해 여러 가지 패키지 관리 도구를 사용할 수 있다. 가장 대표적으로 Swift Package Manager (SPM), CocoaPods, Carthage가 있다.
데스크탑에 응용 프로그램을 설치하기 위해 CD, 웹 다운로드, USB와 같은 것들 중에 어떤 것을 골라 설치할 것이냐처럼 말이다.
그럼 각 도구가 어떻게 다르고 특징이 무엇인지?
Apple에서 제공하는 공식 패키지 관리 도구로서 Xcode와 직접 통합되어 있어 사용이 편리하고 복잡한 의존성 트리를 자동으로 관리할 수 있다. 플랫폼 지원적인 측면에서도 apple의 모든 플랫폼을 지원하기 때문에 가장 추천되는 방식일 것이다.
설치가 가장 간단하다. 해당 라이브러리 공식 페이지에서 제공하는 url을 복사하여 Xcode> Add package dependencies 창에서 바로 붙여넣으면 끝이다.
단점이라면 일부 오래되거나 널리 사용되지는 않는 라이브러리는 없을 수 있다.
spm에 비해 라이브러리 종류가 폭 넓다. 거의 대부분의 라이브러리를 찾을 수 있고 그렇게 때문에 더 폭넓은 자료와 예제를 쉽게 찾을 수 있다.
그러나 설치가 spm에 상대적으로 귀찮다. 또한 복잡한 의존성 트리를 해결하는데 어려움이 생길 수 있고 .xcworkspace파일을 사용해야 하는데 프로젝트 설정이 복잡해질 수 있다.
프로젝트 설정을 수동으로 관리할 수 있어 Xcode설정에 덜 의존적이며 완전한 제어가 가능하다.
모든 게 귀찮다. 설치부터 의존성 관리까지 수동으로 만져줘야한다. 위 두가지 방법보다 사용자가 적어 자료와 예제도 부족하다
SPM이 아닌 방식으로만 지원하는 라이브러리가 있을 때, "정말 너 아니면 안돼!"가 아닐 시 그 라이브러리의 사용을 잘 안하게 될 것 같다. 경험이 많이 쌓이면 업데이트 하겠음