我有以下课程:
@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?场景是:我有一个基类,它有一些在它们之间相关的实用程序类方法。孩子们不需要实现这些,但需要实现其中一些方法中使用的那些。但是一旦流进入父节点,当它调用此方法时,它会调用父节点 - 它没有实现。
答案 0 :(得分:0)
您有多个问题:
<强>第一强> 由于@rmaddy的评论,第一点被删除了。
<强>第二强>
您的方法会返回instancetype
变量,而他们不会:如果您希望保留这样的实现,请更改您的方法以返回void
<强>第三强>
您忘记了+ (instancetype)method1;
的实施,因此此代码无效。