- This topic has 2개 답변, 3명 참여, and was last updated 4 years 전에 by
야곰.
-
글쓴이글
-
-
Ky J참가자
- 글작성 : 9
- 답글작성 : 3
제가 궁금해 하는 부분에 대해 검색을 해봐도 속 시원하지가 않아서 질문 올립니다 !
예를 들어
class NobodyViewController: UIViewController {
var someController: SomeController! = nil
}
이런 클래스를 생성 하는데 안에 전역변수가 옵셔널로 하는 이유가 초기화시 값을 나중에 초기화 할려고 하는걸로 알고 있는데요.
단순 Int,String 을 옵셔널로 하는 의도는 알겠는데 class를 왜 옵셔널로 설정 하는 이유가 궁금합니다. 처음부터 초기화 시켜놓고 사용하면 안되는건가요?
?로 안하고 !로 하는 이유는 무조껀 필요하다는 의미로 알고 있는데 맞는건지.. 필요한데 왜 옵셔널인건지 의도와 이유가 궁금합니다.
그리고 ! = nil 로 되어있는 부분도 궁금합니다. 단지 !가 아니라 ! = nil 인건 처음 초기화시 nil이라는걸 명확히 하기 위해서인가요? 딱히 =nil을 안써도 되는건가요?
2021-10-29 오전 10:27 #49357 -
야곰키 마스터
- 글작성 : 15
- 답글작성 : 576
스위프트에서 프로퍼티는 이니셜라이즈 과정에서 값이 꼭 존재해야 한다는 규칙이 있습니다.
https://docs.swift.org/swift-book/LanguageGuide/Initialization.html그런데 인스턴스를 생성하는 과정에서 값을 초기화해주지 못하는 프로퍼티가 있다면 옵셔널을 활용해서 프로퍼티를 선언해줍니다. 그러면 이니셜라이즈 과정에서 초기화하지 않아도 nil 이 자동으로 할당되거든요.
그렇지만 이 인스턴스가 제대로 동작하기 위해서 꼭 필요한 값이라면 사용 전에 이 값을 꼭 할당해달라는 의미로 암시적 추출 옵셔널(!)로 선언할 수 있습니다.말씀하신대로 처음부터 초기화하고 사용할 수 있다면 옵셔널을 사용하지 않아도 됩니다.
또, = nil 을 하지 않아도 자동으로 nil이 할당되어 초기화됩니다.2021-11-01 오후 4:50 #49439
-
-
글쓴이글
- 답변은 로그인 후 가능합니다.
