아요 개발 일기

[iOS] Framework와 Library 본문

iOS

[iOS] Framework와 Library

소진이 2023. 1. 29. 15:14

안녕하세요!!
오늘은 아주아주아주 기본적인 친구를 데려왔어요!
원래 뭐든 기본이 탄탄해야하는법,,!!
같이 공부해봅시다 :D


Framework ??


Frame + Work 라는 두 단어가 합쳐진 단어입니다.


Frame = 틀
Work = 일하다


"일정한 틀, 뼈대를 가지고 일하다"라는 뜻으로 볼 수 있겠네요?!

즉,

프레임워크는 뼈대나 기반 구조를 뜻하며,
Application 개발 시에 필요한 필수적인 코드, 알고리즘, 데이터베이스 연동 등과 같은 기능들을 위해
어느정도 뼈대(구조)를 제공해주기때문에 일관성 부족과 같은 문제를 해결해줍니다.

 

Swift에서 흔히 사용하는 Framework는 Cocoa Touch Framework 이 있습니다 :)

 

한 문장 정리!

프레임워크란,
소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합


 

Library ??

 

라이브러리는 특정 기능에 대한 도구나 함수들을 모은 집합을 말합니다.

즉, 특정 기능을 개발할때
해당 기능에 필요한 함수들을 모아놓은 라이브러리를
불러서 사용하는 방식입니다.

iOS를 개발할때 흔히 사용하는
라이브러리 종류는 아주 다양합니다!
Alamofire, ObjectMapping, Kingfisher, RealmSwift, SnapKit 등등이 있습니다.

 

라이브러리란,
소프트웨어를 개발하기 쉽게 어떤 기능을 제공하는 도구들

 

그렇다면..
정확한 Framework와 Library의 차이와 공통점은 무엇일까요??

 


 

Framework와 Library의 공통점과 차이점

 

프레임워크와 라이브러리의 차이는

Flow(흐름)에 대한 제어 권한

어디에 있느냐의 차이라고 할 수 있습니다!

프레임워크 전체적인 흐름을 자체적으로 가지고 주도하지만
라이브러리는 그저 필요한 기능이 있을때 흐름을 제어하며 능동적으로 가져다 쓰는것입니다.

위의 내용을 한 문장으로 정리하면
제어의 역전(Inversion Of Control)이 적용되어있다고 합니다.


 

제어의 역전(Inversion Of Control) 이란?

 

어떠한 일을 하도록 만들어진 프레임워크에 제어의 권한을 넘김으로써 

클라이언트 코드가 신경서야 할 것을 줄이는 전략입니다.

일반적으로 우리는 프로젝트를 생성하고 Main함수를 만들어서 시작지점을 형성합니다.

그리고 Main 함수에서 프로그램의 흐름을 정하는 것은 프로그래머의 몫으로 

우리가 어떠한 순서를 부여하느냐에 따라서 흐름을 제어하는 것이 일반적인 사고입니다.

하지만 여기서 프레임워크는 일반적인 사고와 반대되는 모습을 보여주는데 ,

실행의 흐름을 프레임워크 자체가 가지고 있어서 우리의 코드를 프레임워크안에 넣어서 개발을 진행해야 합니다.

실제로 CocoaTouch와 같은 프레임워크의 프로젝트를 생성해보면

어느정도 뼈대를 만들어서 그 안에 필요에 따라 우리의 코드를 넣습니다.

일반적으로 프로그래머가 가지고 있어야하는 제어의 권한을 프레임워크에게 주었기 때문에 

우리는 이를 제어의 역전이라고 말합니다.

 


 

그렇지만 프레임워크, 라이브러리 둘 다

프로그램을 쉽게 만들기 위한 것들이라는 공통점이 있습니다!

 


 

요약 🧐

프레임워크 : 소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합
라이브러리 : 소프트웨어를 개발하기 쉽게 어떤 기능을 제공하는 도구들
공통점 : 프로그램을 쉽게 만들 수 있게 하는 공통된 목적
차이점 : Flow(흐름)에 대한 제어 권한이 다름

  • 프레임워크 전체적인 흐름을 자체적으로 가지고 주도
  • 라이브러리 필요한 기능이 있을때 흐름을 제어하며 능동적

 

 

Foundation과 Library에 대해서 이제 제대로 이해하셨나요?!

부디 도움되는 글이었으면 좋겠네요..ㅎㅎ

만약 틀린 부분이 있으면 댓글 주시면 바로 수정하겠습니다!

감사합니다 :D