4

假设我有一个名为 MyBaseClass 的 Objective-C 类和一个名为 MySubclassedClass 的子类。

MyBaseClass 有两个类方法:

+ (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 回答