Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 커맨드패턴
- Lifecycle
- 디자인패턴
- 싱글턴패턴
- DispatchQueue
- 이터레이터패턴
- 스테이트패턴
- unowned
- 프록시패턴
- 옵저버패턴
- 데코레이터패턴
- 템플릿메서드
- 어댑터패턴
- cocoapods
- SWIFT
- 상태패턴
- 파사드패턴
- Xcode
- 컴파운드패턴
- ios
- 추상팩토리패턴
- RxSwift
- 스트래터지패턴
- Mobile
- WKWebView
- 컴포지트패턴
- 팩토리메서드패턴
- 전략패턴
- Scenedelegate
- ViewController
Archives
- Today
- Total
ios dev kangwook.
iOS) Static / Dynamic Library 본문
iOS에서 Library란?
Xcode Target의 일부로 빌드되지 않은 코드 및 데이터 조각을 정의한 것
일종의 호출할 수 있는 클래스 및 함수들의 집합.
- 각 호출은 약간의 작업을 수행하고 클라이언트에게 제어권을 반환
라이브러리는 사용자가 전체적인 Application의 Flow를 만듦
Framework?
공유 라이브러리와 헤더 및 다른 리소스의 하위 디렉토리를 포함하는 번들
프레임워크는 전체적인 Application의 Flow를 스스로가 쥐고 있고, 라이브러리를 필요한 곳에서 가져다 씀 (제어의 역전)
Static Library( .a)
- Static Library를 만들고 linker를 통해 executable file을 생성(컴파일 마지막 쯤 일어남)
- 이 때, static library 코드 역시 executable file에 복사됨
- 따라서 앱이 실행되면 앱 소스코드 + static library 코드를 포함하는 것들이 주소 공간에 로드됨
즉, 큰 executable file은 느린 시작시간 + 큰 메모리 공간을 가져감
또한, static library가 업데이트 되면 클라이언트 앱은 개발자가 업데이트 된 library와 다시 Link하지 않는 이상 업데이트 된 기능을 사용할 수 없음
Dynamic Library( .dylib)
- Dynamic Library를 만들고 linker를 통해 executable file을 생성
- 이 때, dynamic library에 대한 참조만 executable file에 포함됨
- executable file이 생성되고 link는 되었지만, 복사가 안됐음
즉, executable file의 크기가 Static에 비해 작음
dylib은 이 많을수록 main이 실행되기 전까지 launch time이 길어지기 때문에 dylib이 많을 수록 앱 실행속도가 느려짐
Static Library vs. Dynamic Library
Static Library
- 장점
- 필요한 파일들을 Heap에 복사해와서 사용하는 것이므로 런타임 속도가 빠름
- 단점
- 메모리가 많이 사용됨
- 컴파일 속도가 오래 걸림
Dynamic Library
- 장점
- 주소값을 Heap에 저장해놓고 사용하는 것으미르 컴파일 속도가 적개걸림
- 메모리도 효율적으로 사용 가능
- 단점
- 비교적 런타임 속도가 느림
참조
'iOS' 카테고리의 다른 글
iOS) Xcode Unit Test (0) | 2022.10.10 |
---|---|
iOS) Sandbox (0) | 2022.10.09 |
iOS) Architecture Pattern (0) | 2022.09.29 |
iOS) Scene (0) | 2022.09.18 |
iOS) Split View (0) | 2022.09.17 |
Comments