UIViewController, Hashable, Equatable

Groot·2023년 1월 1일
0

TIL

목록 보기
121/153
post-thumbnail

TIL

🌱 난 오늘 무엇을 공부했을까?

📌 면접스터디

📍 UIViewController

  • UIKit 앱의 뷰 계층 구조를 관리하는 객체

🔗 뷰 컨트롤러의 주요 책임

  • 일반적으로 기본 데이터의 변경에 대한 응답으로 뷰의 내용 업데이트
    • 뷰 컨트롤러는 UIResponder 객체이며 뷰 컨트롤러의 루트 뷰와 일반적으로 다른 뷰 컨트롤러에 속하는 해당 뷰의 슈퍼 뷰 사이의 responder chain에 추가된다.
    • 뷰 컨트롤러의 뷰가 이벤트를 처리하지 않는 경우 뷰 컨트롤러는 이벤트를 처리하거나 슈퍼뷰에 전달한다.
  • 뷰와의 사용자 상호 작용에 응답
  • 뷰 크기 조정 및 전체 인터페이스 레이아웃 관리
  • 앱에서 다른 뷰 컨트롤러를 포함한 다른 개체사이를 관리

🔗 Life Cycle


1. loadView() : 컨트롤러가 관리하는 뷰를 만든다.
2. viewDidLoad() : 컨트롤러의 뷰가 메모리에 로드된 후 호출, 뷰 계층 구조가 nib 파일에서 로드되었는지 또는 loadView() 메서드에서 프로그래밍 방식으로 생성되었는지 여부에 관계없이 호출
3. viewWillAppear() : 뷰가 뷰 계층에 추가될 것임을 뷰 컨트롤러에 알린다. 뷰가 보여지기전 호출
4. viewDidAppear() : 뷰가 뷰 계층에 추가되었음을 뷰 컨트롤러에 알린다. 뷰 컨트롤러가 화면에 나타난 직후에 실행.
5. viewWillDisappear() : 뷰가 뷰 계층에서 제거되려고 한다는 것을 뷰 컨트롤러에 알린다. 뷰가 사라지기 전에 호출
6. viewDidDisappear() : 뷰 계층 구조에서 뷰가 제거되었음을 뷰 컨트롤러에 알린다. 뷰가 사라진 후에 호출

📍 Hashable, Equatable

  • 정수 해쉬 값을 제공하기 위해서 Hasher를 통해 해쉬화 될 수 있는 타입
  • Hashable 프로토콜을 채택한 타입은 유일한 값(해시값)으로 구분될 수 있다
  • 하나만 존재해야하는 Dictionary의 키 값이나 중복된 값을 허용하지 않는 자료구조인 Set에 들어가는 값들을 고유 정수 값으로 변환해서 접근할 수 있도록 하기 위해서 Hashable을 채택해야 한다.

🔗 hash(into:)

  • 4.1부터는 구조체와 열거형에 대해서는 컴파일러가 hash(into:) 를 자동으로 구현
  • 클래스에 대해서는 컴파일러가 자동으로 구현해주지 않기 때문에 직접 구현

🔗 Equatable

  • 값이 같은지 비교할 수 있는 형식
  • == 함수를 사용해서 값을 비교한다.
  • Swift의 모든 기본 유형(예: String, Int, Double 및 Bool)은 기본적으로 해시 가능
  • struct경우 모든 저장된 속성이 Equatable를 준수
  • enum의 경우 연결된 모든 값이 Equatable를 준수 (연결된 값이 없는 enum은 Equatable 선언 없이도 적합성을 갖는다.)
profile
I Am Groot

0개의 댓글