IBOutlet. 특히, 왜 강제 옵셔널 언래핑이어야만 하는가에 대해서.IBOutlet은 강제 옵셔널 언래핑이 붙어서 생성이 된다. 하지만 왜 그럴까?IBOutlet만??viewDidLoad()가 아직 되지 않은 상태라면, 각종 레이블이나 서브뷰 처럼 뷰컨트롤러가 들고 있는 프로퍼티들은 아직 로드되지 않은 상태인 것이 맞는다. viewDidLoad() 호출 이후에는 해당 값들이 존재함이 보장되므로, 강제 언래핑이어도 일단은 괜찮다는 것이다. (두 번째 착지점)IBOutlet이 기본적으로 변수로 지정되는 이유도 여기에 있다. viewDidLoad() 이전에는 값이 없는 상태이지만, viewDidLoad() 이후에는 새로운 값을 '새로 할당' 해줘야 하기 때문. 마치 테스트 코드를 짤 때, sut을 강제 옵셔널 해제 변수로 만들어 놓고 setUpWithError()에서 테스트하고자 하는 인스턴스를 넣어주는 과정과 비슷하달까..nil일 때 불러와야 할 일이 있다면, 이것은 강제 옵셔널로 지정되어서는 안 되겠다.https://blog.curtisherbert.com/to-optional-or-not-to-optional-iboutlet/
https://cocoacasts.com/should-outlets-be-optionals-or-implicitly-unwrapped-optionals