私は、MyBaseClassというObjective-Cクラスと、MySubclassedClassというサブクラスを持っているとしましょう。 backgroundColorの方法はbackgroundImage
を呼び出しObjective-C:サブクラスのコールクラスメソッド
+ (UIColor *)backgroundColor;
+ (UIImage *)backgroundImage;
:
MyBaseClassは、2つのクラスのメソッドを有します。それは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のクラスメソッドは 'static'ではなく' C++ 'の意味で 'virtual'です...私はこのC++の用語の選択は残念だと思います。 – Yuji