MyBaseClass라는 Objective-C 클래스와 MySubclassedClass라는 서브 클래스가 있다고 가정 해 보겠습니다.Objective-C : 서브 클래스의 호출 클래스 메소드
이+ (UIColor *)backgroundColor;
+ (UIImage *)backgroundImage;
의 backgroundColor 방법은 backgroundImage
를 호출
MyBaseClass
는 두 개의 클래스 메소드가 있습니다. 이 MyBaseClass에 국한 된 경우, 내backgroundColor
방법은
+ (UIColor *)backgroundColor {
UIImage *img = [MyBaseClass backgroundImage];
// irrelevant
return color;
}
과 같을 것이다 그러나 나는 MySubclassedClass에 MyBaseClass를 서브 할 수 있어야합니다. backgroundColor
은 변경되지 않고 항상 부모의 backgroundImage
메소드를 호출합니다. 이 시나리오에서는 backgroundImage
이 모든 하위 클래스에서 재정의됩니다. 1backgroundColor1는 인스턴스 메서드가 있었다면
, 단순히
UIImage *img = [[self class] backgroundImage];
을 사용하지만, 그것은 정적 메서드 때 내가 사용하는 수있는 '자기'는 없다.
Objective-C에서 어느 정도 떨어져 있습니까?
그리고 왜 당신은 수업 방법에 자아가 없다고 생각합니까? – bealex
"정적 메서드"라는 단어를 "클래스 메서드"로 바꿨습니다. Objective-C의 클래스 메소드는 C++에서'virtual'입니다.'static'이 아닙니다 ... 저는 C++에서이 용어를 선택하는 것이 불행하다고 생각합니다. – Yuji