Objective c 父母和孩子之间共享的目标C init方法
假设我有这样一个父init方法:Objective c 父母和孩子之间共享的目标C init方法,objective-c,Objective C,假设我有这样一个父init方法: - (id)initWithValue:(int)val name:(NSString *)n { value = val; name = n; } 以及一个子类,其init如下所示: - (id)initWithAge:(int)a { age = a; } 有没有办法做到以下几点: [Child initWithAge:10 value:12 name:@"Sam"]; 年龄将转到子init方法,而“value”和“name”
- (id)initWithValue:(int)val name:(NSString *)n
{
value = val;
name = n;
}
以及一个子类,其init如下所示:
- (id)initWithAge:(int)a
{
age = a;
}
有没有办法做到以下几点:
[Child initWithAge:10 value:12 name:@"Sam"];
年龄将转到子init方法,而“value”和“name”将转到父方法?或者每个子级都必须使用[super init]期望它期望的所有参数并将其传递给父级吗?在
child
中,您必须声明initWithAge:value:name:
。如果您不做一些工作,就不会显式地“转到父级”方法
- (id)initWithAge:(int)a value:(int)val name:(NSString *)n
{
self = [super initWithValue:val name:n];
if(self)
{
age = a;
}
return self;
}
您将在Child中声明amethod:
-(id)initWithAge:(int)age value:(iint)value name:(NSString*)name {
if ( (self = [super initWithValue:value name:name]) ) {
_age = age; // assuming you an ivar '_age'
}
return self;
}
您可以将某些内容传递给超类,但只有它所期望的内容,才不会为您创建方法
已经阅读了和,理解什么是重要的