-> 사실 나는 스토리보드를 사용하지않고 오로지 코드로만 구현하기에 위 코드와 같은 구조를 되게 많이 봐왔다, 이번 글에서 다룰 초기화구문델리게이션도 사실은 예전에 스위프트문법에 대해 공부할때 봐왔던것이다, 하지만 Swift에 대한 코딩을 해오면서 스스로 필요성을 느끼거나 궁금하기전까진 의미가 없다라고 느낀것이 문법에 대해 안다고해서 실전에선 잼병인것처럼 이 또한 이러한 이유로 별 생각이 쓰고있다가 이번에 한번 정리해보려한다
-> 일단 초기화구문델리게이션이라는것은 위 코드처럼 init메소드내부에 부모클래스의 init메소드를 호출하는것을 말한다, 예를 들어서 tableView에 대한 delegate를 보통 self라고 지정할때 이때 부르는 delegate는 대리자라는 의미로 tableView에서 일어나는 이벤트들을 내가 처리할께요~ 라는 뜻처럼 부모클래스에 대한 초기화구문을 자식클래스에서 대신 처리할게요~라는 의미로 받아들이면 될꺼같다
그 이유는 기존에 자식클래스에서는 따로 init메소드를 만들어주지않으면 자연스럽게 부모클래스의 init메소드를 이용할 수 있게된다(자동상속), 하지만 자식클래스에서 init메소드를 생성하려는 순간 부모클래스의 init메소드를 사용할 수 없게되고 그렇게되면은 자식클래스의 init메소드안에서 따로 부모클래스의 init메소드를 호출하지않게되면은 부모클래스의 프로퍼티가 초기화되지않게되는 일이 발생하게되고 이를 방지하기위해서 자식클래스 init메소드안에는 항상 super.init을 호출해주는것이다!!
-> 그니까 부모클래스의 저장 프로퍼티를 초기화하는것은 부모의 초기화메소드가 해야할 일이지만 초기화 메소드가 상속되지않는 까닭에 자식의 초기화 메소드는 부모클래스의 저장프로퍼티까지 모두 초기화해주어야한다
->헌데 부모의 저장프로퍼티를 하나하나 초기화하는것은 번거롭다, 그래서 부모클래스의 초기화메소드를 호출하여 간접적으로 초기화하는 방법을 많이 사용
-> 위 그림에서의 override init이라고 된 이유는 부모클래스의 init메소드와 동일한 구조이기에 override키워드가 붙여진것이다!!