According to Apple, initializer methods should always begin with the word 'init,' followed by name components that describe the arguments. If a class has more than one initializer, the methods should be chained together so that only one of them is doing all the work, and the others should simply provide default values for the missing arguments.
So for example, a Person class might have the following init... methods:
- (id)init
{
return [self initWithFirstName:nil
lastName:nil];
}
- (id)initWithFirstName:(NSString *)firstName
lastName:(NSString *)lastName
{
return [self initWithFirstName:firstName
lastName:lastName
age:nil];
}
- (id)initWithFirstName:(NSString *)firstName
lastName:(NSString *)lastName
age:(NSNumber *)age
{
[super init];
self.firstName = firstName;
self.lastName = lastName;
self.age = age;
return self;
}