개발을 잘하고 싶은 주니어?

Framework란? Library란? 본문

개발/iOS

Framework란? Library란?

데쿠! 2021. 11. 27. 02:47
반응형

Framework

개발 공부를 하다 보면 프레임워크라는 단어를 많이 접하게 됩니다.

이 전에는 그냥 특정 기능을 구현하고 싶을 때 사용하는 메서드나 프로퍼티들을 모아 놓은 패키지? 정도라고 생각하고 그냥 넘어갔습니다. 

(UIKit 도 UI 관련한 메서드나 프로퍼티들을 지원하고 있는 프레임워크입니다.!)

 

하지만 정확한 의미를 알기 위해서 애플 문서를 찾아보았습니다. 링크는 여기 ⬇️

https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WhatAreFrameworks.html#//apple_ref/doc/uid/20002303-BBCEIJFI

 

What are Frameworks?

What are Frameworks? A framework is a hierarchical directory that encapsulates shared resources, such as a dynamic shared library, nib files, image files, localized strings, header files, and reference documentation in a single package. Multiple applicatio

developer.apple.com

- 프레임워크란 이미지 파일, nib 파일, localized strings, 헤더 파일, 레퍼런스 문서와 같은 공유 리소스들을 하나의 패키지로 묶어놓은 계층적인 폴더?(hierarchical directory)입니다.

- 또한 말 그대로 뼈대라는 의미를 가지고 있습니다. 개발을 할 때, 어느 정도의 구조를 제공해주기 때문에 개발자는 이 구조 위에서 코드를 더 추가할 수 있습니다.

프레임워크를 이해하기 위해서는 bundle의 개념을 알아야할 필요가 있습니다. 번들은 디렉토리(파일을 포함하고 있는 폴더?)라고 생각하면 됩니다. iOS에서, 번들은 관련 있는 파일들을 하나의 패키지로 묶어서 사용할 수 있도록 합니다. 예를 들어서, 이미지, nib 파일이나 컴파일 코드 같은?

그래서 시스템은 이것을 하나의 파일로 생각해서, 개발자들이 내부 구조를 알지 못하는 상태에서 번들의 리소스들에 접근할 수 있도록 해줍니다. 

위에 얘기했던 것처럼, 헤더, localization files, 문서와 같은 것도 포함을 할 수 있는데, 우리는 이것을 framework라는 이름의 번들로 사용을 합니다.

https://www.runtastic.com/blog/en/frameworks-ios/

 

Overview: iOS Static and Dynamic Frameworks and Libraries

What’s the difference? Static & dynamic frameworks and libraries on iOS. Get an overview plus Q&A

www.runtastic.com

 

Library

Library란 활용가능한 도구들의 집합을 말합니다. 개발자는 라이브러리의 도구를 가지고 개발에 이용합니다.

Alamofire나 RxSwift, Kingfisher와 같은 것도 Library라고 할 수 있습니다.

Kingfisher는 url을 가지고 해당 url의 이미지를 로드하는 라이브러리입니다. 그래서 우리는 이 기능을 가지고 이미지를 로드할 수 있습니다. (라이브러리가 제공하는 기능을 이용한다는 개념?)

 

Framework vs Library

라이브러리와 프레임워크는 제어 흐름에 대한 주도성이 누구에게 있냐에 차이가 있습니다.

라이브러리는 개발자가 호출할 수 있는 클래스들의 집합입니다. 그래서 주도성은 그것을 어떤 식으로 사용할지에 대해 고민하는 개발자에게 있습니다.

반면에 프레임워크는 전체적인 흐름에 대한 주도를 가지고 있으며 (가이드라인이 있다고 생각하면 될 듯?) 개발자는 그 흐름 내에서 필요한 코드를 추가합니다.

여기서 Inversion of Control(제어의 역전)이 적용되었다고도 하는데 이것은 기존에 클라이언트 코드가 갖고있던 제어권을 프레임워크에게 넘긴다고 하는 의미입니다.

 

Reference

https://blog.naver.com/PostView.naver?blogId=soojin_2604&logNo=222422221117&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView 

 

Framework vs Library (프레임워크와 라이브러리의 차이점)

Framework vs Library 프레임워크와 라이브러리의 정확한 차이점은 무엇일까요? 1. Framework (프레임워...

blog.naver.com

https://juyeop.tistory.com/23

 

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

안녕하세요, 오늘은 프로그래밍을 할 때 자주 이용되는 위의 두 가지에 대해서 이야기하려고 합니다. 저를 포함한 많은 사람들이 프레임워크와 라이브러리의 차이에 대해서 잘 모르고 계셔서

juyeop.tistory.com

 

반응형

'개발 > iOS' 카테고리의 다른 글

Swift Package Manager (SPM) 공부하기 - 실습  (0) 2021.11.27
Swift Package Manager (SPM) 공부하기 - 이론  (0) 2021.11.27
의존성(Dependency) 공부하기  (1) 2021.11.27
Hex to Color  (0) 2021.11.23
URLSession 공부하기 - 3  (0) 2021.11.23
Comments