iOS에서 ‘super’ 키워드는 부모 클래스의 메서드, 프로퍼티 및 초기화를 호출하고 부모 클래스에 대한 접근을 제공하는 역할을 합니다.
부모 클래스의 메서드 호출
‘super’를 사용하여 부모 클래스의 메서드를 호출할 수 있습니다.
이는 자식 클래스에서부모 클래스의 동작을 재사용하거나 확장할 때 유용합니다.
예를 들어, 부모 클래스에 구현된 메서드를 호출하고, 추가적인 로직을 수행하거나 결과를 조작하는 등의 작업을 할 수 있습니다.
class ParentClass {
func someMethod() {
// 부모 클래스의 메서드 구현
}
}
class ChildClass: ParentClass {
override func someMethod() {
super.someMethod() // 부모 클래스의 메서드 호출
// 추가적인 로직 수행
}
}
부모 클래스의 프로퍼티 접근
‘super’를 사용하여 부모 클래스의 프로퍼티에 접근할 수 있습니다.
자식 클래스에서 부모 클래스의 프로퍼티를 읽거나 쓰는 작업을 할 때 사용합니다.
class ParentClass {
var someProperty: Int = 0
}
class ChildClass: ParentClass {
override init() {
super.init()
super.someProperty = 10 // 부모 클래스의 프로퍼티에 접근 및 수정
}
}
부모 클래스의 초기화 호출
초기화 과정에서 ‘super’를 사용하여 부모 클래스의 초기화 메서드를 호출해야 합니다.
이를 통해 상속 계층 구조에서 초기화가 올바르게 이루어집니다.
class ParentClass {
init() {
// 부모 클래스의 초기화 작업
}
}
class ChildClass: ParentClass {
override init() {
super.init() // 부모 클래스의 초기화 호출
// 자식 클래스의 초기화 작업
}
}
위의 예시에서 ‘super’ 키워드는 부모 클래스와 자식 클래스 간에 관계를 형성하고 상호작용할 수 있도록 도와줍니다.
부모 클래스의 메서드, 프로퍼티, 초기화에 접근하여 코드의 재사용성과 확장성을 높이는 데 사용됩니다.
iOS의 ‘loadView()’ 메서드에서 ‘super.loadView()’를 호출해서는 안 되는 이유는 ‘loadView()’ 메서드가 뷰 컨트롤러의 뷰를 생성하고 설정하는 역할을 수행하기 때문입니다.
‘loadView()’ 메서드는 UIVIewController 클래스의 메서드로, 해당 뷰 컨트롤러의 뷰를 생성하고 초기화하는 역할을 합니다.
기본적으로 ‘loadView()’ 메서드는 뷰를 생성하여 ‘view’ 프로퍼티에 할당합니다.
만약 ‘super.loadView()’를 호출하면 부모 클래스인 UIVIewController의 ‘loadView()’ 메서드가 실행되어 기본 동작인 빈 뷰를 생성하고 ‘view’ 프로퍼티에 할당합니다.
일반적으로 뷰 컨트롤러에서 ‘loadView()’ 메서드를 오버라이드하여 직접 커스텀 뷰를 생성하고 설정하거나, 스토리보드 또는 nib 파일과 연결된 뷰를 로드하고 설정하는 작업을 수행합니다.