iOS 앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체를 무엇이라고 하는가?
by 사슴비행기iOS 앱 화면의 콘텐츠를 표시하고 관리하는 로직을 담당하는 객체는 ViewController 입니다.
MVC (Model - View - Controller) 아키텍처에서 Controller 역할을 수행하는 부분입니다.
ViewController는 iOS 앱에서 사용자 인터페이스를 관리하는 주요한 구성 요소 중 하나이며, 각 ViewController는 특정 화면이나 화면의 일부분을 관리합니다. ViewController는 뷰의 라이프사이클에 따라 화면 표시, 갱신, 해제 등의 작업을 수행합니다.
또한 모델과 뷰 간의 상호 작용을 조정하는 중요한 부분입니다.
#주요 특징
1. View 계층 구조 관리
UIViewController는 하나의 주요 뷰와 그 하위 뷰들을 관리합니다.
이 뷰 계층 구조는 해당 뷰컨트롤러가 관리하는 화면의 구조를 정의합니다.
View 속성을 통해 주요 뷰에 접근할 수 있습니다.
2. 라이프사이클 메서드
ViewController는 다양한 라이프사이클 메서드를 가지고 있어, 뷰의 생성, 표시, 업데이트, 숨김, 해제 등의 이벤트에 대응할 수 있습니다.
대표적으로 viewDidLoad, vewWillAppear, viewDidAppear, viewWillDisappear, viewDidDisappear 등이 있습니다.
3. 데이터 전달
ViewController는 다른 ViewController로부터 데이터를 받아오거나 다른 ViewController에 데이터를 전달할 수 있습니다.
Segues, 프로퍼티, 델리게이트, 노티피케이션 등을 사용하여 데이터를 주고받습니다.
4. 사용자 입력 처리
사용자의 터치, 제스쳐, 키보드 입력 등과 같은 이벤트를 처리할 수 있습니다.
버튼 클릭, 텍스트 입력, 화면 터치 등의 동작에 대한 액션 메서드를 정의하여 처리합니다.
5. 화면 전환 관리
다른 ViewController로의 화면 전환을 관리합니다.
NavigationController, TabBarController, ModalPresentation 등을 통해 다른 화면으로 이동하는 로직을 담당합니다.
6. 메모리 관리
메모리 관리에 대한 기능을 제공합니다.
예를 들어, 메모리 경고를 받았을 때 ViewController가 적절히 메모리를 관리할 수 있습니다.
7. Storyboard 및 XIB 연동
Interface Builder에서 뷰 컨트롤러를 시각적으로 디자인할 수 있도록 스토리보드와 XIB 파일과 연동됩니다.
8. UIViewController 상속
기본적인 ViewController의 기능을 확장하기 위해 서브클래싱하여 사용자 정의 ViewController를 만들 수 있습니다.
#MVC
1. View
뷰컨트롤러의 역할 중 하나는 화면에 표시되는 콘텐츠를 관리하는 것입니다.
뷰컨트롤러는 사용자 인터페이스 요소들을 관리하고 이를 통해 사용자에게 정보를 표시하거나 사용자 입력을 받습니다.
주로 UIViewController 클래스를 서브클래싱하여 구현합니다.
2. Controller
데이터 모델과 상호작용하며, 데이터의 상태를 기반으로 화면을 업데이트하고 사용자의 입력을 처리합니다.
사용자와 상호작용하여 입력에 따른 액션을 처리하고, 필요에 따라 모델로부터 데이터를 가져와 뷰에 반영합니다.
뷰컨트롤러는 주로 비즈니스 로직이나 앱의 흐름을 관리합니다.
3. Model
뷰컨트롤러가 관리하는 데이터를 처리하는 부분을 모델이라고 한다.
모델은 앱의 데이터 구조, 비즈니스 로직, 데이터베이스 연결 등을 담당한다.
뷰 컨트롤러는 모델로부터 데이터를 가져와 화면에 표시하거나 사용자의 입력을 모델로 전달하여 데이터를 업데이트한다.
'ios > 면접질문 공부' 카테고리의 다른 글
앱이 시작할 때 main.c 에 있는 UIApplicationMain 함수에 의해서 생성되는 객체는 무엇인가? (0) | 2023.12.30 |
---|---|
App thinning에 대해서 설명하시오. (0) | 2023.12.19 |
iOS 앱의 콘텐츠나 데이터 자체를 저장/보관하는 특별한 객체를 무엇이라고 하는가? (0) | 2023.12.19 |
실제 디바이스가 없을 경우 개발 환경에서 할 수 있는 것과 없는 것을 설명하시오. (0) | 2023.12.18 |
Bounds와 Frame의 차이점 (0) | 2023.12.18 |
블로그의 정보
Beautiful Coding
사슴비행기