IOS 개발을 하다 보면 Foundation, UIKit을 주로 import 한다. Storyboard를 기준으로 swift파일을 만들 때 기본적으로 Foundation을 import 하는데 개발을 하다 보면 어디는 UIKit만 있고 어디는 Foundation만 있어서 이 둘의 차이점을 비교해 보기로 했다.
1. UIKit
먼저 Apple 공식 문서를 보는 습관을 기르기 위해 공식 문서부터 확인해봤다.
"UIKit은 그래픽과 사용자 중심 사용자 인터페이스를 구조 및 관리하는 인터페이스라고 한다."
Overview를 간단히 요약하면
-
window 및 view 아키텍처, 멀티 터치와 같은 유형의 입력을 제공하는 이벤트 처리 인프라 제공
-
사용자, 시스템 및 앱 간의 상호 작용을 관리하는데 필요한 main run loop 제공
-
애니메이션, 문서, 그리기 및 인쇄, 현재 장치의 정보, 텍스트 관리 및 디스플레이, 검색, 접근성, 앱 확장 및 리소스 관리 지원
그리고 이 UIKit을 import 하면 Foundation도 import 되기 때문에 UIkit과 Foundation을 함께 import 할 필요는 없다.
2. Foundation
"Foundation은 앱에서 필수 데이터 타입, 컬렉션, 및 운영 체제 서비스에서 접근하는 앱의 기본 기능 계층을 정의한다."
라는데 맞는 해석인지는 모르겠다...
Overview를 간단히 요약하면
- 데이터 저장소
- 텍스트 가공
- 날짜 및 시간 계산
- 정렬 및 필터링
- 네트워킹
추가로 Foundation은 Swift Standard Library를 참조하기 때문에 Swift를 import하지 않아도 된다.
3. Swift Standard Library
"읽기 쉽고 성능 좋은 코드를 작성하여 복잡한 문제를 해결합니다."라고" 라고 하는데...
그렇다네요...
Overview를 간단히 요약하면
- Swift 프로그램 작성을 위한 기본 기능 계층을 다음과 같이 정의함
- Int, Double, String 과 같은 기본 데이터 타입
- Array, Dictionary, Set 과 같은 공통적인 데이터 구조
- print(_:seperator:terminator:), abs(_:)와 같은 전역 함수
- Collection, Equatable 처럼 일반적인 추상화를 표현하는 프로토콜
- CustomDebugStringConvertible, CustomReflectable 처럼 모든 타입에 사용 가능한 작업을 커스터마이징 하는 데 사용하는 프로토콜
- OptionSet처럼보일러 플레이트 코드(자주 재사용하는 코드) 없이 기능을 구현하기 위해 사용하는 프로토콜
정리하자면
UIKit은 App과 같이 user interface를 사용할 때 import 해야 하는 것이다.
문자, 문자열 등 기본 객체나 Date 같은 것만 사용한다면 Foundation만 import해도 된다.
Swift는 기본 데이터 타입만 사용할 때 import 하면 된다.
참고자료
[번역] Swift Standard Library
[iOS] UIKit, Foundation, Swift Standart Library - 무엇을 사용해야 할까?
'Programming > Swift' 카테고리의 다른 글
[Swift] Triple 구현해보기 (0) | 2020.01.28 |
---|