Your issue is that only an *instance* of a class has an init method. The class itself does not. A class is like a template for creating objects; you might have a class called "MyClass" and then several instances of that class.
This is not valid:
Code:
MyClass* myClass = [MyClass init];
Your initMyClass method doesn't help because it's a class method too. You can't call [self init] or [super init] inside that method because self and super still refer to the class, not an instance.
The usually way to get an instance from class is to call "alloc" on the class. This is more what you want:
Code:
// reserve some memory for an instance
MyClass *instance = [MyClass alloc];
// initialize that instance - we assign because there are special cases
// where we get a different address back
instance = [instance init];
That's usually written in shorthand like this:
Code:
MyClass *instance = [[MyClass alloc] init];
If you did want to write a class method that returns an object, it should alloc and init an object, autorelease it, and then return it.
EXTRA CREDIT: Classes are also objects in objective-C, but I don't want to confuse the issue.