iOS 공부하는 감자

iOS) 라이브러리와 의존성 관리 도구 본문

iOS

iOS) 라이브러리와 의존성 관리 도구

DongTaTo 2022. 7. 14. 17:53
반응형

라이브러리

필요한 기능이 있는 코드의 묶음으로, 효율적인 코드 작성을 위해 필요한 곳에서 호출하여 사용할 수 있도록

Class나 Function으로 만들어져 있다.

 

프로그래밍의 전체적인 흐름 규칙을 따라야하는 프레임워크와 다르게 라이브러리는 개발자가 원할 때 필요에 따라 사용하고

직접 코드를 제어할 수 있다는 차이가 있다.

 

보통 Github에서 유용한 오픈소스 라이브러리들을 많이 찾을 수 있는데,

구글에 "github swift TextField(기능이 필요한 요소)" 키워드로 검색하면 좋은 자료들이 많이 나온다.!

 

 

유용하고, 안정적인 라이브러리를 찾는 방법

1) 대기업 앱의 "오픈소스 라이선스" 리스트를 참고한다.

굵직한(?) 대기업들의 앱에서는 설정창에서 "오픈소스 라이선스"라는곳을 확인할 수 있는데, 해당 앱에서 사용한 오픈소스 라이브러리들 리스트를 볼 수 있다.

많은 대기업 앱에서 채택(?)하고 있는 라이브러리는 어느정도 안정적이라는 의미..

 

2) 라이브러리의 마지막 커밋 날짜를 확인한다.

버전에 따라 유지보수가 잘 이루어지는지 확인한다.

만약 3년 ~ 이상 업데이트가 되지 않았다면.. 사용하지 않는게 좋다.

 

 

 


 

 

의존성 관리 도구

라이브러리를 사용, 관리하기 위한 도구를 말한다.

 

1) 코코아팟 (CocoaPods)

[장점]

  • 대부분의 라이브러리가 지원하는 의존성 관리 도구이다.
  • 라이브러리의 의존성의 의존성까지 자동으로 관리해주기 때문에 사용하기 편하다

[단점]

  • 라이브러리를 다운받아 설치하기 때문에 시간이 오래 걸리며, 프로젝트를 빌드할 때마다 모든 라이브러리들이 함께 빌드되어 빌드 속도가 느려진다.
  • 터미널을 사용해야 된다...ㅎ

 

 

2) 카르타고 (Carthage)

[장점]

  • 코코아팟에 비해 빌드 속도가 빠르다.

[단점]

  • 지원하는 라이브러리가 적어서 사용성이 떨어진다.

 

 

3. 스위프트 패키지 매니저 (SPM : Swift Package Manager)

 

[장점]

  • 애플이 지원하는 퍼스트파티 의존성 관리 도구이다.
  • Xcode에서 바로 라이브러리를 검색하고, 설치할 수 있다. (쉽고, 빠름!)
  • 지원하는 라이브러리가 점점 많아지고 있으며, 많은 사람들이 사용하는 인기 라이브러리의 경우 대부분 SPM을 지원한다.

[단점]

  • 굳이 꼽자면.. 코코아팟보다는 지원하는 라이브러리가 적다는 것?

 

 

 


 

 

Dependency Rule

라이브러리도 버전이 업데이트되며, 새로운 기능이 추가되거나 있던 기능이 사라지기도 한다.

더 이상 업데이트 되지 않거나 기능 지원을 종료하는 경우도 있어서 프로젝트를 진행할 때, 어떤 버전의 라이브러리를 사용하여 구현할지 여부는 중요한 부분을 차지한다.

 

소프트웨어 버전 규칙

소프트웨어는 5.4.1 와 같은 형태로 버전 정보를 나타낸다.

5 : Major

4 : Minor

1 : Patch

를 순서대로 의미한다.

 

 

Major 

  • 기존 버전과 거의 호환이 되지 않는다.
  • API가 변경되면 Major버전을 올린다.
  • ex) Swift2  ==>  Swift3

 

Minor

  • 기존 버전과 호환된다.
  • 새로운 기능이 추가되는 경우 Minor 버전을 올린다.

 

Patch

  • 기존 버전에서 버그를 수정하는 경우 Patch 버전을 올린다.

 

 

[SPM : Swift Package Manager의 Dependency Rule]

  • Up to Next Major : Major 버전 단위로 지정
  • Up to Next Minor : Minor 버전 단위로 지정
  • Range : 버전 범위를 사용자가 직접 설정
  • Exact : 특정 버전으로 설정 (4.2.1로 설치)

 

반응형

'iOS' 카테고리의 다른 글

iOS) UserDefaults  (0) 2022.07.16
iOS) Sandbox  (0) 2022.07.15
iOS) App · ViewController의 생명주기  (0) 2022.07.13
iOS) IBOutlet연결 Strong VS Weak  (0) 2022.07.07
iOS) 다크모드 대응하기  (0) 2022.07.06