2024.02.23 - [iOS/SWIFT] - [Swift] iOS 커스텀 프레임워크 생성하고 사용하기
2024.02.26 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (1)
2024.02.27 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (2) UIKit SnapKit으로 비교하기
2024.02.29 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (3) 접근제한자
프레임워크와 라이브러리.
개발을 공부하고 있다면 아마 공부 시작 3일만에도 들어볼 수 있는 단어라고 생각해요
그 만큼 많은 사람이 사용하고, 언급하고, 만들어지고 있죠?
🩵 프레임워크?
앱의 기본적인 구조와 실행 흐름을 정의하는 골조(뼈대)
정의된 이 틀 안에서 개발할 수 있다
프레임워크라는 것은 일종의 규칙입니다
이 규칙에 따라서 개발해야 하는 가이드를 제공하는 거라고 할 수 있겠네요
개발자는 프레임워크를 사용해서 프레임워크의 규칙을 따라 개발해야 하기 때문에
프레임워크가 애플리케이션의 흐름을 제어하고 개발자는 그걸 따라 가는 거죠
예를 들면 이런겁니다
어느 프레임워크에서 Car라는 컴포넌트가 만들어져 있고, 우리는 이 프레임워크를 사용하고 있다고 생각해봐요
그러면 해당 프레임워크를 import 해서 Car 컴포넌트를 활용해주기만 하면 되는겁니다
운전을 할 수도 있고, 주차장을 만들어 볼 수도 있겠죠
만약 주차장 만들기와 운전하기. 이 2개를 전부 하나의 프로젝트에서 구현한다고 해볼게요
그리고 또, Car 컴포넌트가 포함된 프레임워크가 없었다면?
우리는 직접 몽키스패너를 들고 자동차부터 만들어야 합니다..
이렇게
프레임워크는 커다란 틀, 규칙을 정의하여 개발자가 이 규칙을 따르게 함으로써
일관된 방식으로 개발할 수 있게 돕고, 생산성도 높여줍니다
위와 같은 예시를 보면 컴포넌트를 활용한 재사용성에도 큰 도움이 되겠네요!
✔️ 제어의 역전
이런 상황을 IoC, Inversion of Contorl. 제어 역전이라고 합니다
보통은 개발자가 앱의 흐름을 주도하고, 제어하는 게 일반적이지만
이 주도권을 프레임워크에 약간 옮겨서 프로젝트의 부담을 줄여주는 거에요
대신 앱의 코드는 프레임워크의 코드에 기반하여 수동적으로 작성되겠죠?
그래서 제어(를 담당하는 주체가)역전 되었다~ 라고 합니다
🩵 라이브러리?
특정한 기능을 수행하는 코드의 모음
개발자가 선택적으로 사용한다
라이브러리는 유용한 도구를 모아둔 폴더같은 거라고 표현해볼게요
도구이기 때문에 전반적인 흐름에는 영향을 주지 않습니다
그러나 이 흐름을 진행하는데 도움을 줄 수는 있겠죠?
개발자가 직접 어떤 도구를 사용할지 정해서, 그 도구로 조금 더 나은 생산성을 가져가는 겁니다
예를 들어볼게요!
집 인테리어를 한다고 할 때, 못을 박고 싶어요
도구가 없다면 우리는 이걸 주먹 꽉 쥐고 쾅쾅 두드려서 박아야 할 겁니다ㅠㅠ
무지하게 아프고 상처가 나는 비효율을 감수할 수 밖에 없죠, 도구가 없으니까요!!
하지만 망치, 적어도 튼튼하고 그립감 좋은 돌덩이라도 있으면 상황은 달라질거에요
못을 박는 행위를 할 때, 더 나은 과정이 될 겁니다
다시 한 번 말하지만,
이러한 도구는 개발 흐름에 도움을 줄 지언정 그 구조에 영향을 주지는 않아요!
못을 박는데 반드시 망치가 필요한 건 아니죠, 주먹으로 하는게 좀 힘들 뿐이지
하지만 도구를 사용한다면 생산성, 효율성의 수준을 높게 끌어올려줄 겁니다!!!!
프레임워크는 구조에 영향을 주는 규칙
라이브러리는 유용한 도구의 모음 이라고 (개인적으로) 정의해봤는데요
이 차이점을 눈에 확 들어오게 파악할 수 있는 예시가 있어요
바로 UIKit과 SnapKit입니다
UIkit은 애플의 대표적인 프레임워크이고 SnapKit은 오토 레이아웃을 조금 더 쉽게 작성하게 만들어주는 라이브러리에요
다음 게시글에서는 이 UIKit 과 SnapKit을 사용하여 프레임워크, 라이브러리의 차이점에 대해 코드와 함께 작성해보겠습니다
~ヾ(^∇^)
2024.02.23 - [iOS/SWIFT] - [Swift] iOS 커스텀 프레임워크 생성하고 사용하기
2024.02.26 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (1)
2024.02.27 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (2) UIKit SnapKit으로 비교하기
2024.02.29 - [iOS/SWIFT] - [Swift] 프레임워크와 라이브러리 (3) 접근제한자
https://javaprogrammernotes.blogspot.com/2015/03/inversion-of-control-dependency.html
'iOS > Swift' 카테고리의 다른 글
[Swift] 프레임워크와 라이브러리 (3) 접근제한자 (0) | 2024.02.29 |
---|---|
[Swift] 프레임워크와 라이브러리 (2) UIKit SnapKit으로 비교하기 (0) | 2024.02.27 |
[Swift] iOS 커스텀 프레임워크 생성하고 사용하기 (0) | 2024.02.23 |
[Swift] http API 허용하기 - Info.plist (0) | 2024.02.21 |
[Swift] API KEY 숨기기 - plist 사용하기 (0) | 2024.02.20 |