@interface Man : NSObject
@property (nonatomic) NSString *name;
@property (nonatomic) NSString *country;
- (instancetype)initWithName:
(NSString *)name
country:(NSString *)country;
- (instancetype)initWithName:
(NSString *)name;
@end
@implementation Man
- (instancetype)initWithName:(NSString *)name
country:(NSString *)country {
self = [super init];
if (self) {
_name = name;
_country = country;
}
return self;
}
//no default values: shorter inits
//substitute them
- (instancetype)initWithName:
(NSString *)name {
return [self initWithName:name
country:@"unknown"];
}
- (instancetype)init {
return [self initWithName:@"unknown"];
}
@end
Man *man1 = [Man new];
//name 'unknown', country 'unknown'
Man *man2 = [[Man alloc]
initWithName:@"Vladimir"];
//name 'Vladimir', country 'unknown'
Man *man4 = [[Man alloc]
initWithName:@"Vladimir"
country:@"Russia"];
//name 'Vladimir', country 'Russia'