728x90
Library의 소프트웨어적 의미
- 일반적으로 Code, Data를 다른 곳에서 재사용하기 위해서 묶어놓은 패키지를 의미한다.
- Code, Data 뿐만이 아니라 image, document, sound file 등의 리소스들도 라이브러리에 포함할 수 있다.
Xcode의 Framework
- Apple에서 만든 Library Package 방식
- 즉 Framework 또한 Library 중의 하나
Dynamic Library vs Static Library
- Xcode에서 Framework 생성 시 Dynamic 혹은 Static한 라이브러리 둘 중 하나로 생성을 할 수 있다.
1. Static Library
- framework 빌드 시, 해당 framework를 import하는 사용부에 framework 코드가 복사되어 일부분으로 사용되는 방식이다.
- 장점:
- run time 속도가 빠르다.
- 단점:
- build time은 느리다.
- 여러 곳에서 static library를 import하는 경우에는 그만큼 코드가 복사가 되어 application의 file size가 증가할 수 있다.
2. Dynamic Library
- import하는 사용부와 함께 빌드되지 않고, 따로 framework file이 빌드되고 해당 파일의 참조만 가져와서 사용하는 방식이다.
- 장점:
- 여러 곳에서 동일한 dynamic library의 참조를 가져와 run time에 load시키기 때문에 하나의 dynamic library만을 가지고 application의 file size의 증가 없이 사용이 가능하다.
- build time이 static library에 비해 상대적으로 빠르다.
- 단점:
- 동적으로 load하는 방식이라 static library에 비해서 run time 속도가 느리다.
- run time이 느리다 하더라도 크게 체감되는 수준이 아니기에 일반적으로 framework 생성 시 Dynamic library형태로 사용하는 경우가 많다.
Embed vs Do not Embed
- framework를 project에 포함시킬 때, framework의 파일구조를 최종 application 결과물에 포함시킬지 말지에 대해서 선택할 수 있다.
1. Embed
- 최종 application 결과물을 packaging할 때, framework의 폴더구조를 그대로 복사한 형태로 application을 생성한다.
- Dynamic Library의 경우에는 무조건 Embed해야지 크래시가 발생하지 않는다.
- Dynamic Library는 동적으로 runtime loading하는 형태이기 때문에 코드가 미리 복사되어 있는 상태가 아니다.
2. Do not embed
- framework 폴더를 application 결과물에 포함하지 않는다.
- Static Library의 경우엔 Do not embed하여도 상관없다.
- build할 때 이미 코드가 복사되었기 때문
- 하지만 Static Library도, framework에 포함된 image등의 resource를 사용하려면 Embed시켜야한다.
- 이 경우엔 코드 복사본이 하나 더 생긴다.
- build time에 import된 곳에 하나
- application 패키지내에 framework 형태로 또 하나 존재
- 때문에 code와 Data뿐만이 아니라, resource도 사용해야하는 경우엔 보통 Dynamic Library 형태로 생성한다.
- 이 경우엔 코드 복사본이 하나 더 생긴다.
728x90
'iOS > 설명' 카테고리의 다른 글
[iOS] UIScrollView contentInsetAdjustmentBehavior (0) | 2022.08.02 |
---|---|
[iOS] IPA 파일 (0) | 2022.08.02 |
[iOS] IBOutlet Collections (0) | 2022.08.01 |
[iOS] setContentOffset의 animation 시간 조절하기 (0) | 2022.07.25 |
[iOS] UIView LifeCycle 생명주기 (0) | 2022.07.18 |
댓글