티스토리 뷰
프레임워크와 라이브러리에 대해 설명해보라하면 큰 틀과 느낌은 설명할 수 있을 것 같은데 자세히는 못할 것 같아서 알아본다.
자세히 설명을 못한다는건 모른다는 소리니까!
프레임워크
프레임워크를 직역해보자.
frame(뼈대) work(일하다) 뼈대를 가지고 일하는 것이다.
정해진 레시피로 요리하는 밀키트로 예시로 들 수 있다.
일정한 형태의 틀(레시피)를 가지고 결과물을 만드는 것!
프레임워크란?
소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합이다.
개발 시 필수적인 코드, 알고리즘, 데이터베이스 연동 등과 같은 기능을 위해 어느정도 뼈대를 제공해주는 것이다.
프레임워크가 제공하는 뼈대 위에 개발자가 코드를 작성하여 개발할 수 있다.
특징
개발자들이 따라야 할 가이드라인을 가진다.
개발할 수 있는 범위가 정해져 있다.
개발자를 위한 다양한 도구들이 지원된다.
특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성되어 있다.
컴포넌트들은 재사용이 가능하다.
높은 수준에서 패턴들을 조작화 할 수 있다.
장점
공통의 틀을 제공하여 코드 품질을 높일 수 있다.
개발 편의성이 오르기 때문에 시간을 줄일 수 있다.
오류의 폭을 줄일 수 있다.
단점
프레임워크의 의존도가 늘어나 개발 능력이 저하될 수 있다.
개발자의 자유도가 떨어진다.
예시
iOS에서 가장 대표적인 프레임워크는 UIKit이다.
라이브러리
단순 활용 가능한 도구들의 집합을 말한다.
소프트웨어 개발에 필요한 특정 기능을 위해 작성한 코드, 함수들의 집합이다.
공통으로 사용될 수 있는 기능들을 모듈화 한 것으로 완전한 프로그램이 아니라 특정한 부분 기능만을 수행하도록 제작된다.
사용 목적
생산성과 편의성이다.
원하는 구현사항이 있을 때 누군가 이미 라이브러리로 만들어놨다면 라이브러리를 사용하는 사람은 편하게 개발할 수 있다.
예를 들어 누군가 자동차를 라이브러리로 만들어놨다면 그걸 사용하는 사람은 자동차를 만들 필요없이 바로 탑승할 수 있다.
라이브러리가 없다면 자동차부터 만들어야 할 것이다.
예시
라이브러리는 많은 종류가 있다.
iOS에서 자주 사용하는 라이브러리는 RxSwift, Snapkit, Alamofire 등이 있다.
프레임워크와 라이브러리 차이
라이브러리와 프레임워크 차이는 제어 흐름에 대한 주도성이 누구에게/어디에 있느냐에 따라 다르다.
프레임워크
전체적인 흐름을 스스로가 쥐고 있으며, 사용자가 그 안에서 필요한 코드를 짜 넣는다.
제어의 역전이 적용되어 있다.
내 코드가 호출 당한다.
라이브러리
사용자가 전체적인 흐름을 만들며, 라이브러리를 가져다 쓰는 것이라고 할 수 있다.
내 코드가 호출한다.
제어의 역전이란?
내가 호출당하는 입장이 되는 것을 제어의 역전이라고 한다.
예를 들어 viewDidLoad에 내 코드를 넣어두면 화면의 생명주기에 맞게 호출되는 함수들이 있다.
UIKit 프레임워크가 타이밍에 맞춰서 내 코드를 실행시켜주는 것이다.
'iOS > iOS' 카테고리의 다른 글
[iOS] Fastlane 적용해보기 (0) | 2023.01.31 |
---|---|
[iOS] CocoaPods vs Carthage vs SPM (0) | 2023.01.04 |
[iOS] 접근권한요청 (카메라, 사진, 위치, 알림) (0) | 2022.06.15 |
[iOS] 다크모드 미 지원 (0) | 2022.06.15 |
[WWDC2022] Platforms State of the Union (0) | 2022.06.09 |
- Total
- Today
- Yesterday
- docker
- Git
- AWS Fargate
- kakao
- onTapGesture
- Custom
- 카메라
- strcut
- IOS
- Protocol
- rxswift
- enumerations
- SwiftUI
- Swift
- AWS
- 곰튀김
- tabview
- MVVM
- ObservedObject
- navigation
- Login
- CodingTest
- delegate
- frame과 bounds 차이
- ChatGPT
- Generic
- OCR
- 의미있는이름
- file private
- Xcode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |