目前我的父类(super class)有这个初始化方法:
- (id)initWithFoo:(int)foo;
在一个子类中,我有一个自定义的 init 方法调用它的父类(super class)的 init,就像这样。 Bar 是子类独有的。
-(id)initWithFoo:(int)foo Bar:(int)bar {
if (self = [super initWithFoo:foo]){
_bar = bar;
}
return self;
}
我在创建子类的实例时遇到了问题,因为编译器很乐意在我的子类实例的可能初始化方法列表中建议父类(super class) init 方法,我绝对不希望这样。
但是,如果我从父类(super class)的 .h 文件中删除 initWithFoo:(int)foo,那么子类就不能再在它们自己的初始化方法中使用它。
有什么办法解决这个问题吗?
最佳答案
是的,您可以在您的父类(super class)中实现 initWithFoo,并在您的子类中进行“扩展”声明:
@interface SuperClass()
- (instancetype)initWithFoo:(int)foo;
@end
确保将该声明放在您 child 的 .m 文件中的@implementation 之上
关于ios - 如何使父类(super class)的自定义 init 方法仅对其子类内部可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31449349/