When I’m creating custom classes, I’d like to be able to skip the alloc init part of the code once I go to construct an instance of the class. Similar to how it’s done with:
NSString * ex = [NSString stringWithFormat...];
Basically I already have the class set up with a custom initializer method to set up my basic variables. However, when I’m on the front end and actually making these critters I have to say:
[[Monster alloc] initWithAttack:50 andDefense:45];
and I’d rather be able to say
[Monster monsterWithAttack:50 andDefense:45];
I know it’s a simple stupid thing to just get rid of the alloc part but it makes the code more readable so I’d prefer to do it that way. I originally tried just changing my method from
-(id)initWithAttack:(int) a andDefense:(int) d
to
-(id)monsterWithAttack:(int) a andDefense:(int) d
and then changing my self = [super init] to self = [[super alloc] init]; but that clearly doesn’t work! Any ideas?
You have to make a class method
in which you create, initialize, and return an instance (and don’t forget your memory management):