면접스터디 10W

apwierk·2023년 1월 19일
0

개인 공부

목록 보기
18/20

모든 View Controller 객체의 상위 클래스는 무엇이고 그 역할은 무엇인가?

모든 View Controller 객체의 상위 클래스는 UIViewController이다.

UIViewController는 뷰의 내용을 업데이트하고, 뷰와 사용자의 상호 작용에 응답하고, 기본 데이터의 변경에 대한 응답으로 뷰의 콘텐츠를 업데이트하고, 뷰 크기 조정 및 전체 인터페이스의 레이아웃을 관리한다.


ViewController의 생명주기를 설명하시오.

1. init

ViewController 객체 생성

2. loadView

View를 메모리에 로드

3. viewDidLoad

Controller가 메모리에 로드된 뒤 호출
뷰가 나타나기 전에 호출
최초 한 번 실행(pop되어 다시 뷰가 띄어질때는 실행되지 않음)

4. viewWillAppear

View가 표시되기 직전에 호출
View가 나타날 때 마다 실행

5. viewDidAppear

View가 표시된 후 호출
View에 적용할 애니메이션 작업을 추가하면 좋다

6. viewWillDisappear

View가 사라지기 직전 호출
View1 > View2 > View1 형태로 View가 전환된다면 다음 순서로 진행
View2가 표시할 준비가 되면 이후 View1이 사라집니다.

7. viewDidDisappear

View가 사라지기 직후 호출

뷰 전환 시 순서

View1 viewWillDisappear
View2 viewDidLoad
View2 viewWillAppear
View1 viewDidDisappear
View2 viewDidAppear

8. viewDidUnload

View가 메모리에서 해제된 뒤 호출


MVC 구조에 대해 블록 그림을 그리고(말로 설명하고), 각 역할과 흐름을 설명하시오.


Model은 앱이 무엇을 할것인지 비즈니스 로직을 처리하는 역할이다.
Controller는 모델이 어떻게 처리할 지를 알려주고, 사용자의 이벤트를 받아서 처리하고 Model과 View에 업데이트 요청을 한다.
View는 최종 사용자에게 보여주기 위한 역할이다.
MVC한계: 뷰와 모델이 서로 의존성을 띄게 된다. 사진에서 3,4번의 역할이 모델 -> 뷰 로 이어지면서 MVC 패턴에서는 의존성을 갖게 된다. 즉, 뷰에 복잡한 데이터의 구성이 표현된다면 Controller에 다수의 Model과 View가 복잡하게 연결되는 상황이 생길 수 있다.

Hashable이 무엇이고, Equatable을 왜 상속해야 하는지 설명하시오.

왜 Hashable은 Equatable을 상속해야할까? hashValue는 고유값이어야 하므로 고유값인지 식별해 줄 수 있는 "==" 함수가 필요하다. 그 함수는 Equatable 프로토콜 안에 들어있다. 따라서 Hashable이 Equatable을 상속해야 한다.

Equatable

Equatable은 값의 비교가 가능함을 보장해주는 프로토콜이다. 이 프로토콜을 채택한 타입들은 == 연산자나 != 연산자를 사용해 값을 비교할 수 있다. Array에서 contains(_:) 메소드를 사용할 수 있는 것도 Array가 Equatable 프로토콜을 채택하고 있기 때문이다.

profile
iOS 꿈나무 개발자

0개의 댓글