IT TIP

`[super viewDidLoad]`규칙

itqueen 2020. 12. 4. 21:41
반응형

`[super viewDidLoad]`규칙


구현 전과 구현 후에 [super viewDidLoad]가 호출 된 예제 코드가 있습니다.

다른 많은 토론에서 볼 수 있듯이 항상 super에게 전화 할 필요는 없습니다. 호출 할 때 코딩 전후에 예상됩니까?

이것은 super의 구현이하는 일에 따라 결과를 가질 수 있습니다. 비록 당신의 것을 작성하기 위해 super의 구현을 알 필요는 없습니다.

물론 이것은 모든 UIViewControllers 델리게이트 메서드 (willAppear, didAppear 등)에 적용됩니다.

이견있는 사람?


내 경험 법칙은 초기화와 관련된 작업을 수행하는 경우 항상 수퍼 클래스의 메서드를 먼저 호출하는 것입니다 (아주 호출하려는 경우). 이렇게하면 나중에 메서드에서 사용할 수있는 설정을 수행 할 수있는 기회가 수퍼 클래스에 제공됩니다. 파괴와 관련된 일을하고 있다면 슈퍼 클래스의 메서드를 마지막으로 호출하십시오. 이렇게하면 메서드를 실행하는 동안 개체의 상태에 의존 할 수 있습니다. 마지막으로, 사례별로 다른 사례를 처리합니다. 예를 들어, 이벤트를 처리하는 경우 먼저 이벤트를 처리하고 이벤트를 처리하지 않기로 선택했거나 어떻게 든 변경하여 이벤트를 전달하려는 경우에만 슈퍼 클래스의 메서드를 호출하고 싶을 것입니다. 체인.


두 개의 클래스, 부모와 자식이 있다고 가정 해 봅시다. 자식은 부모로부터 상속됩니다. 문자열을 반환하는 greet라는 메서드가 있습니다.

상위 메소드는 다음과 같습니다.

암호:

-(NSString *)greet {
 return @"Hello";
}

우리는 아이가 부모로부터 배우기를 원합니다. 그래서 우리는 super를 사용하여 엄마가 어떻게 인사하는지 인사하지만 우리 자신의 작은 추가 사항도 있습니다.

코드 : // 부모로부터 상속

-(NSString *)greet {
NSString *parentGreeting = [super greet];
return [parentGreeting stringByAppendingString:@", Mommy"]
}

그래서 이제 부모는 "안녕하세요"라고 인사하고 아이는 "안녕하세요, 엄마"라고 인사합니다. 나중에 "Hi"만 반환하도록 부모의 인사를 변경하면 두 클래스 모두 영향을 받고 "Hi"와 "Hi, Mommy"가 표시됩니다.

super는 수퍼 클래스에 정의 된대로 메소드를 호출하는 데 사용됩니다. 하위 클래스에 의해 재정의 된 메서드에 액세스하는 데 사용되므로 클래스가 부모 클래스가 구현하는 메서드 주위에 자체 코드를 래핑 할 수 있습니다. 어떤 종류의 상속도 수행하는 경우 매우 편리합니다.

참고 URL : https://stackoverflow.com/questions/844195/super-viewdidload-convention

반응형