#import @interface BankAccount : NSObject @property (copy) NSString *name; @property (copy) NSDecimalNumber *balance; - (id)initWithName:(NSString *)name; - (id)initWithBalance:(NSDecimalNumber *)balance; - (id)initWithName:(NSString *)name balance:(NSDecimalNumber *)balance __attribute__((objc_designated_initializer)); @end @implementation BankAccount - (id)initWithName:(NSString *)name { return [self initWithName:name balance:[NSDecimalNumber zero]]; } - (id)initWithName:(NSString *)name balance:(NSDecimalNumber *)balance { if ((self = [super init])) { self.name = name; self.balance = balance; } return self; } - (id)initWithBalance:(NSDecimalNumber *)balance { if ((self = [super init])) { self.name = NSLocalizedString(@"Anonymous", nil); self.balance = balance; } return self; } @end int main(int argc, char *argv[]) { @autoreleasepool { } }