类方法中的继承

时间:2016-10-24 15:33:25

标签: objective-c

我有以下课程:

@interface ClassA

+ (void)method1;
+ (void)method2;

@end

@implementation ClassA

+ (void)method2 {
     [self method1];
  }

@end

一个继承自它的人:

@interface ClassB : ClassA
@end

@implementation ClassB

+ (void)method1 {
   NSLog(@"ClassB");
}

@end

如果在特定的代码段中,我会这样做:

[ClassB method2];

它会抛出一个错误因为它会尝试调用[ClassA method1],但是这个类并没有实现该方法。是否有可能以某种方式调用ClassB而不是ClassA?场景是:我有一个基类,它有一些在它们之间相关的实用程序类方法。孩子们不需要实现这些,但需要实现其中一些方法中使用的那些。但是一旦流进入父节点,当它调用此方法时,它会调用父节点 - 它没有实现。

1 个答案:

答案 0 :(得分:0)

您有多个问题:

<强>第一 由于@rmaddy的评论,第一点被删除了。

<强>第二

您的方法会返回instancetype变量,而他们不会:如果您希望保留这样的实现,请更改您的方法以返回void

<强>第三

您忘记了+ (instancetype)method1;的实施,因此此代码无效。