Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

teunteun2

[Swift] Foundation, UIKit Framework에 대해 (+ UIViewController & UIView의 차이) 본문

iOS

[Swift] Foundation, UIKit Framework에 대해 (+ UIViewController & UIView의 차이)

teunteun2 2022. 3. 16. 00:00

만약 Foundation & UIKit 프레임워크의

상위 프레임워크인 Cocoa Touch에 대해 궁금하시다면

바로 전 포스팅을 참고해주세요 !

https://teunteun2.tistory.com/2

 

1. Foundation Framework

앱 기능 구현을 위해 필요한 데이터 타입(Int, String 등), 컬렉션(Array, Dictionary),

파일 & 데이터 관리, 네트워킹 시스템, 타이머 등이 포함되어 있는 프레임워크

https://developer.apple.com/documentation/foundation

 

Apple Developer Documentation

 

developer.apple.com

 

 

2. UIKit Framework

이벤트 기반 사용자 인터페이스를 제공하는 프레임워크

 

https://developer.apple.com/documentation/uikit

 

Apple Developer Documentation

 

developer.apple.com

 

UIKit Framework에는 익숙한

여러 UI 객체들이 있습니다!

예를들어 UIViewController, UIView, UIButton 등...

 

UIKit 계층구조와 함께 자세히 볼까요 ?

2-1. UIKit 계층구조

출처 : https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CocoaFundamentals/WhatIsCocoa/WhatIsCocoa.html#//apple_ref/doc/uid/TP40002974-CH3-SW10

 

UIKit 계층구조를 보면 맨 위에

'Cocoa Framework 내 모든 클래스의 루트 클래스'인 

NSObject가 있습니다  

 

그리고

UserInterface와 직접적인 연관이 있는

UIKit이기 때문에 모든 클래스 앞에

UI가 붙어있어요

 

우리에게 익숙한 UI 객체들은

UIResponder 하위에 있는 것을 확인할 수 있죠 ?

 

그중에서도 가장 익숙하지만 처음 접한다면 헷갈리기 쉬운

UIViewController, UIView에 대해

정확히 짚고 넘어갈게요 !

 

2-2. UIViewController & UIView

 

UIViewController(이하 뷰컨) 와 UIView는 모두

UIResponder의 개체로, 둘의 관계는 상속 관계가 아닙니다.

이름만 들어보면 뭔가 상속 관계일 것 같은데 말이죠 ..

 

각 뷰컨은 하나의 Root View를 관리하고

Root View가 하위에 여러 UIView

가질 수 있는 구조로 되어 있습니다.

 

이게 무슨 말이냐고요 ?

UIViewController 코드로 들어가보면

 

UIViewController의 open var로 정의되어 있는 root UIView

하나의 UIView가 정의되어 있는데요,

이게 바로 Root View 라고 볼 수 있습니다

 

우리가 Storyboard에서

UIViewContoller 위에 UIView를 얹거나

UIButton, UITextField 등의 UI 오브젝트들을 얹게 되는데요,

 

이렇게 하면 우리는

UIViewController의 Root View 위에

하위 오브젝트들을 넣어주게 되는 것이죠 !

 

따라서 뷰컨은 자신의 Class 의 view속성에 저장된

UIView 계층을 관리한다고 정리할 수 있겠네요 : )