Why use [ClassName alloc] instead of [[self class] alloc]?

Viewed 5503

I'm reading through Mark Dalrymple's Learn Objective-C on the Mac (only at the chapter on Protocols, so still relatively newbish) and trying to figure something out:

Why would you ever reference a class by its own name? If I had a class called Foo, why would I ever want to write, say,

[[Foo alloc] init]

and not

[[[self class] alloc] init]

If I had a subclass Bar, wouldn't the first option invalidate me from writing

[[Bar alloc] init]

whereas the second option would allow it? When would the first option be better?

3 Answers
Related