Re: Confused about superclass initializers
Re: Confused about superclass initializers
- Subject: Re: Confused about superclass initializers
- From: Alexander Spohr <email@hidden>
- Date: Fri, 27 Mar 2009 16:05:33 +0100
Am 27.03.2009 um 15:53 schrieb Roland King:
I've thought myself into a hole in a subclass here ....
If I have a class Foo with a subclass Bar, which adds say 2 new
variables, in Bar's init method I do the usual
self = [ super init ];
after someone called me with
Bar *myBar = [ [ Bar alloc ] init ];
at the point I call that, 'self' is a Bar, it was alloc()ed to be
long enough for a Bar. But it's quite possible that Foo's init will
not init the object it's given, it will throw it away and return me
a totally different Foo, [ super init ] doesn't have to return the
same thing you sent it. But if that happens, it will be a Foo
returned, it won't be a Bar, Foo's constructor has no idea that it's
really meant to be making a Bar, it won't have enough memory
allocated to be a Bar.
Then bad things will happen when I try to set the Bar variables as I
don't have enough memory for it.
Good thought :)
But this ist Objective-C, so a good class does not call [Foo alloc]
but [self alloc] if it is going to allocate some new instance of
itself. And even if you call [super init] (at which time self is an
instance) your self in the class-methods will stay Bar.
The only problem for Foo is, that it won’t know the designated init
for Bar.
But usually you get almost never something else back from super init.
atze
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden