본문 바로가기
iOS

[iOS] Outlets은 왜 옵셔널일까?

by thoonk: 2021. 6. 18.

Outlets은 왜 암시적 추출 옵셔널인지 기록합니다.

 

이를 설명하기 위해 전제가 있다.

클래스 또는 구조체의 인스턴스는 초기화를 마치기 전에 모든 저장 프로퍼티를 초기화시켜야 한다.

만약 초기화할 때 저장 프로퍼티가 가져야 할 값을 모른다면 default 값을 할당하거나 암시적 추출 옵셔널을 사용하여 선언할 수 있다.

이는 outlets이 왜 암시적 추출 옵션으로 선언해야 하는 이유가 된다.

 

outlet의 값은 초기화되면서 설정할 수 없다. 그 이유는 뷰 컨트롤러가 초기화되어야 뷰가 로드되기 때문이다.

이 말은 뷰 컨트롤러의 초기화 직후에 모든 outlets은 값이 없다는 것을 의미한다.

그래서 암시적 추출 옵셔널로 선언해서 편리하게 인터페이스를 빌드하는데 사용한다.

 

하지만 암시적 추출 옵셔널은 런타임 오류를 발생시킬 수 있어 조심해서 사용해야 한다. 

뷰 컨트롤러가 뷰를 로드하기 전이나 로드하는 동안 outlet에 접근하면 런타임 오류가 발생할 수 있다.

 

왜 암시적 추출 옵셔널을 사용하는지 궁금했는데 해소되었다..

혹시나 암시적 추출 옵셔널에 대해 궁금하다면 여기를 눌러주세요!

부족한 점은 피드백해주시면 감사합니다😄

 

참고:

https://cocoacasts.com/should-outlets-be-optionals-or-implicitly-unwrapped-optionals

'iOS' 카테고리의 다른 글

[iOS] Unwind Segue  (1) 2021.11.11
[iOS] CaseIterable  (1) 2021.06.27
[iOS] UIView & CALayer  (0) 2021.06.01
[iOS] Notification Center  (0) 2021.05.27
[iOS] Foundation  (0) 2021.05.22

댓글