일반적으로 반환 값이없는 모든 재정의 함수에 대해 super를 호출하는 것이 좋습니다.
viewDidLoad
의 구현을 알 수 없습니다. UIViewController 거기에 몇 가지 중요한 설정 물건을 할 수 있고 그것을 호출하지 않을 것이라고 자신의 viewDidLoad
코드를 실행할 기회를주지 않을 것입니다.
UIViewController 하위 클래스에서 상속하는 경우와 동일한 작업이 수행됩니다.
super.viewDidLoad
으로 전화를 걸어도 아무 것도하지 않더라도 언제나 전화하는 것은 좋은 습관입니다. 전화하지 않는 습관에 빠지면 필요할 때 전화하는 것을 잊을 수 있습니다. 예를 들어 제 3 자 프레임 워크 나 자신의 코드베이스에서 종속 된 ViewController를 서브 클래 싱하는 경우를 예로들 수 있습니다.
class PrintingViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("view has loaded")
}
}
class UserViewController: PrintingViewController {
override func viewDidLoad() {
super.viewDidLoad()
// do view setup here
}
}
PrintingViewController
실행할 수있는 기회를 제공하지 않을 것 여기의 viewDidLoad를 호출하지 자신의 viewDidLoad
코드
당신이 viewDidLoad
아무것도하지 않으려면 단지 돈 '
이 인위적인 예제를 가지고 그것을 구현하지 마십시오. 어쨌든 super 메서드가 호출됩니다.
출처
2016-10-20 10:45:25
tsp
https://upload.wikimedia.org/wikipedia/commons/a/a2/Method_overriding_in_subclass.png 동물처럼 움직이지 않는 개가 필요한 경우 부모 클래스를 호출 할 수 없습니다. –
재정의 개념과 상속 개념을 이해합니다. 내가 알아야 할 것은 super를 부르는 것의 이점이 있다면이 특별한 경우에 있는가? 어쨌든 코드가 작동합니까? – Andr3s4n
당신의 질문은 * 언어에 독립적이라는 것을 유의하십시오 * UIKit 프레임 워크의 올바른 사용법에 관한 질문입니다. 따라서 Objective-C 용으로 작성된 이전 Q & A (예 : http://stackoverflow.com/questions/824695/do-i-always-have-to-call-super-viewdidload-in-the-viewdidload-method)는 유효합니다. 신속한 프로그램. –