は、次イニシャライザ Objective-Cイニシャライザを使用するために推奨される方法はどれですか?
- (id)initWithParameterA:(A *)a
{
return [self initWithParameterA:a parameterB:nil parameterC:nil];
}
- (id)initWithParameterA:(A *)a parameterB:(B *)b
{
return [self initWithParameterA:a parameterB:b parameterC:nil];
}
- (id)initWithParameterA:(A *)a parameterB:(B *)b parameterC:(C *)c
{
// Actual initialization logic
}
便宜初期化子次の2つの群の好ましい
考えますか? (と仮定すると、ARC。)グループA
+ (id)objectWithParameterA:(A *)a
{
return [self objectWithParameterA:a parameterB:nil parameterC:nil];
}
+ (id)objectWithParameterA:(A *)a parameterB:(B *)b
{
return [self objectWithParameterA:a parameterB:b parameterC:nil];
}
+ (id)objectWithParameterA:(A *)a parameterB:(B *)b parameterC:(C *)c
{
return [[self alloc] initWithParameterA:a parameterB:b parameterC:c];
}
グループB
+ (id)objectWithParameterA:(A *)a
{
return [[self alloc] initWithParameterA:a parameterB:nil parameterC:nil];
}
+ (id)objectWithParameterA:(A *)a parameterB:(B *)b
{
return [[self alloc] initWithParameterA:a parameterB:b parameterC:nil];
}
+ (id)objectWithParameterA:(A *)a parameterB:(B *)b parameterC:(C *)c
{
return [[self alloc] initWithParameterA:a parameterB:b parameterC:c];
}
は、私は追加のメソッド呼び出しでグループA結果はを取得するという些細な意味を理解します実際の初期化ロジックはありますが、いずれのデザインについても深いことはありますか?
ドゥを与えるだろう。 –