개발/아이오에스

ios] 면접질문

dev.jake 2021. 3. 22. 12:17

Q. 뷰의 라이프사이클을 이야기하고 viewdidload에서 super을 사용하는이유는 ?

 

override func viewDidLoad() {

super.viewDidLoad()

}

 

Q. viewDidLoad에서  super.viewDidLoad() 넣어줘야하는지? 

Q. 객체, 클래스의 인스턴스가 메모리에서 해제되는 시점에 호출되는 것은?

 

A. super는 부모클래스를 의미한다. 오버라이딩(재정의)를 하는 viewDidload에서 부모(super)의 작업을 실핼할지말지 선택하는 것 

보통 viewDidload같이 뷰 라이프 사이클은 템플릿 패턴으로 구현되어있다. 뷰 컨트롤러의 뷰가 메모리에 로드될 때 OS에 의해 호출되는 것이기 때문에 super를 붙여주는게 좋다

-> 뷰가로드가되고, 뷰를 만들때 하는 여러 설정들을 마무리해주는 작업 - > super.viewDidLoad() -> 이후 아래에서 로직 구현

 

A. deinit -> 클래스의 인스턴스가 메모리에서 해제되는 시점에 호출됨- > 인스턴스가 해제되는 시점에서 해야할 일을 구현할 수 있음. deinit은 매개변수를 지닐 수 없음 - > 자동으로 호출되므로 직접 호출할 수 없음. -> 클래스 타입에만 구현가능 -> 해제되는 시점은 ARC의 규칙에 따라 결정됨. 

 

 



https://archijude.tistory.com/146 [글 쓰는 프로그래머]

 

(Swift)인스턴스 생성 / 소멸 (init / deinit)

인스턴스를 생성하는 이니셜라이저와 클래스의 인스턴스가 소멸될 때 호출되는 디이니셜라이저, 그리고 이와 관련된 것들에 대해 알아봅니다. 프로퍼티 초기값 이니셜라이저 init 디이니셜라

archijude.tistory.com

yagom.net/forums/topic/override-%ED%95%A0-%EB%95%8C-super-%EA%BC%AD-%ED%98%B8%EC%B6%9C%ED%95%B4%EC%95%BC-%ED%95%98%EB%82%98%EC%9A%94/

 

override 할 때 super 꼭 호출해야 하나요??? - 야곰닷넷

뷰컨에서요 override func viewDidLoad() { super.viewDidLoad() } 꼭 super.viewDidLoad() 이거 넣어줘야 하나요..?? override func viewDidLoad() […]

yagom.net