我在 C++ 上工作过,我们使用下面的初始化列表来初始化基类的构造函数。
Derived::Derived(int x):Base(x) {
cout << "B's Constructor called";
}
如何在目标 C 中实现相同的操作。如何在初始化时将值传递给基(超)类。可能吗?
谢谢。
我在 C++ 上工作过,我们使用下面的初始化列表来初始化基类的构造函数。
Derived::Derived(int x):Base(x) {
cout << "B's Constructor called";
}
如何在目标 C 中实现相同的操作。如何在初始化时将值传递给基(超)类。可能吗?
谢谢。
这里我们使用 super 来调用基类构造函数。例如:假设我们有一个基类,并且有这个启动器方法
// Base .h
- (id)initWithName:(NSString *)name;
@property (strong, nonatomic) NSString *name;
// Base.m
- (id)initWithName:(NSString *)name
{
self = [super init];
if(self){
self.name = name;
}
return self
}
// Derived.h
- (id)initWithName:(NSString *)name;
// Derived.m
- (id)initWithName:(NSString *)name
{
self = [super initWithName:name];
return self;
}
// This is how we can create an object of Derived class
Derived *derived = [[Derived alloc]initWithName:@"foo"];
- (instancetype)init {
if (self = [super init]) {
// your code here
}
return self;
}
在 Objective-C 中,没有构造函数,子类需要显式调用父类的 init 方法。喜欢[super init];
这是一篇描述Objective C对象初始化器的好文章。对象初始化
我们[super init];
用来初始化你所有的超类。它可以满足您的要求。