1

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

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

同时指定的初始化器是这样给出的:

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

如您所见,指定的初始化程序已经初始化了 itemName 变量。所以,为一个变量设置一个特定的初始化器有什么意义。

4

1 回答 1

1
  • 默认值。 如果您使用指定的初始化程序和每次都必须指定的默认值,那么如果您想更改此默认值可能会很痛苦,因为您必须访问此初始化程序的每个实例并更改值。如果您有一个集中了默认值位置的初始化程序,则很容易更改。
  • 弃用。 如果您稍后必须将变量添加到类和初始化程序中,那么当您不需要指定值时,不必更改初始化变量的每个位置会容易得多。
于 2013-05-27T01:30:19.503 回答