Why are alloc and init called separately in Objective-C?

Posted by André Hoffmann on Stack Overflow See other posts from Stack Overflow or by André Hoffmann
Published on 2009-09-06T11:11:50Z Indexed on 2010/05/10 23:54 UTC
Read the original article Hit count: 318

Note: I'm relatively new to Objective-C and am coming from Java and PHP.

Could someone explain to me why I always have to first allocate and then initialize an instance?

Couldn't this be done in the init methods like this:

+ (MyClass*)init {
    MyClass *instance = [MyClass alloc];
    [instance setFoo:@"bla"];

    return instance;
}

+ (MyClass*)initWithString:(NSString*)text {
    MyClass *instance = [MyClass init];
    [instance setFoo:text];

    return instance;
}
...

Is this just a relict from the old C days or is there something that I'm not seeing?

I know this isn't a problem as I could as well always call alloc and init, but since it's a bit tedious I'd like to at least know why I'm doing it.

I'm liking the expressiveness of the language so far, but this is something that I want to fully understand in order to think the Objective-C way.

Thank you!

© Stack Overflow or respective owner

Related posts about objective-c

Related posts about alloc