多个初始化器的用途是什么

时间:2013-05-27 01:25:26

标签: objective-c initializer

我理解拥有初始化程序的目的是将实例变量设置为某些值。但是,我很困惑为什么你想为每个实例变量都有多个初始化器。一个初始化器不能设置所有实例变量吗?我想我的问题实际上是在一个类中使用多个初始值设定项的实用性。例如,一个类有以下内容:

    - (id)initWithItemName:(NSString *)name
    {
    return [self initWithItemName:name valueInDollars:0 serialNumber:@""];
    }

同时指定的初始化程序如下:

    - (id) initWithItemName:(NSString *)name valueInDollars:(int)value 
                                     serialNumber:(NSString *)sNumber; 

如您所见,指定的初始化程序已初始化itemName变量。那么,对于一个变量只有一个特定的初始值设定器。

1 个答案:

答案 0 :(得分:1)

  • 默认值。如果您使用指定的初始化程序,并且每次都必须指定默认值,如果您想要更改此默认值,则可能会很痛苦,因为您必须去到此初始值设定项的每个实例并更改值。如果您有一个初始化程序集中了默认值的位置,则很容易更改。
  • 弃用。如果您必须稍后向类和初始化程序添加变量,那么在您不需要时不必更改初始化变量的每个位置都会更容易指定一个值。