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 |
Tags
- 애니메이션
- Clean Code
- ribs
- 리펙터링
- UICollectionView
- map
- Xcode
- uitableview
- combine
- uiscrollview
- Observable
- 리팩토링
- Refactoring
- SWIFT
- Protocol
- swift documentation
- 스위프트
- ios
- HIG
- tableView
- MVVM
- clean architecture
- collectionview
- Human interface guide
- swiftUI
- 클린 코드
- 리펙토링
- RxCocoa
- rxswift
- UITextView
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] framework vs Library (프레임워크와 라이브러리의 차이), static framework, dynamic framework 본문
iOS 기본 (swift)
[iOS - swift] framework vs Library (프레임워크와 라이브러리의 차이), static framework, dynamic framework
jake-kim 2021. 1. 5. 21:45* 더욱 자세한 static framework외 dynamic framework 개념은 최신 포스팅 글 참고
프레임워크 vs 라이브러리
- 라이브러리 - "사용하는 주체"가 기능을 요청하며 사용 (언제 요청 할지, 언제 응답 받을지, 언제 결과 처리할 지 모두 주체가 결정)
- 프레임워크 - "사용하는 주체"와 기능의 제어권이 역전 IoC (Inversion of Control)
RxSwift와 같이 bind 시켜놓으면 (제어권 부여), 이벤트 일어날 시 처리되는 (제어의 역전) 로직
Inversion of Control의 장점
- 재사용성 증가
- 관심사의 분리: As a Service (사람이 전기를 사용할 때 toggle switch만 키면 됨 - 관심사의 분리)
- DI(Dependency Injection)과의 연관: 프레임워크가 호출할 내용을 Dependency로 보고, "사용하는 주체"한테 injection하는 개념으로 이해
iOS에서 프레임워크의 종류
- static framework: Do not embed (복사)
- dynamic framework: Embed (참조)
- 차이점은 컴파일된 코드를 참조하는 방식
- 프레임워크 생성 시 디폴트는 dynamic으로 만들어짐
Static Framework
- 앱의 실행 파일 안에 복사
- 앱 실행파일에 직접 복사되어 있으므로 런타임상 속도 빠름
- 참조가 아닌 복사이므로 안정적
- dynamic에 비해 메모리 더 소모
- Framwork안에 이미지 파일과 같은 리소스 파일이 있어도 사용불가
Dyanamic Framework
- 런타임 상에서 Mach-O 파일과 참조관계
- Framework내에 이미지나 뷰같은 리소스 파일, Bundle을 Embed할 수 있음
- 빌도속도 상승
- 메모리 상 필요할 때 load시키므로 lazy함
- 디버그시 필요한 dSYM파일을 프레임워크 개발자가 따로 제공해야함
- static에 비하여 런타임에서 속도 저하
* sign은 애플개발자 계정에서도 사용되는 프레임워크의 signing파일이라고 이해
코드상의 API만 제공해주는 경우 static framework 사용, 아니라면 dynamic framework 사용할 것
'iOS 기본 (swift)' 카테고리의 다른 글
Comments