Objective c 父母和孩子之间共享的目标C 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”

假设我有这样一个父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”将转到父方法?或者每个子级都必须使用[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;
}
您可以将某些内容传递给超类,但只有它所期望的内容,才不会为您创建方法

已经阅读了和,理解什么是重要的