4

MyBaseClassというObjective-CクラスとMySubclassedClassというサブクラスがあるとしましょう。

MyBaseClassには、次の2つのクラスメソッドがあります。

+ (UIColor *)backgroundColor;
+ (UIImage *)backgroundImage;

backgroundColorメソッドは。を呼び出しますbackgroundImage。MyBaseClassに限定されている場合、私のbackgroundColorメソッドは次のようになります。

+ (UIColor *)backgroundColor {
     UIImage *img = [MyBaseClass backgroundImage];
     // irrelevant
     return color;
}

しかし、MyBaseClassをMySubclassedClassにサブクラス化できるようにしたいと思います。backgroundColor変更されず、常に親のbackgroundImageメソッドを呼び出します。このシナリオでbackgroundImageは、すべてのサブクラスでオーバーライドされます。

1backgroundColor1がインスタンスメソッドの場合、単純に次のように使用します。

UIImage *img = [[self class] backgroundImage];

しかし、静的メソッドの場合に使用できる「自己」はありません。

Objective-Cでこれを達成できる場所はありますか?

4

2 に答える 2

12

別のクラスメソッドからクラスメソッドにメッセージを送信する場合、selfがクラスです。したがって、次のことができます。

UIImage *img = [self backgroundImage];
于 2011-07-27T18:29:59.093 に答える
4

selfクラス(静的)メソッド内で使用できます。この場合、selfはクラスオブジェクトを参照します。

于 2011-07-27T18:43:16.530 に答える