Re: Confused about superclass initializers
Re: Confused about superclass initializers
- Subject: Re: Confused about superclass initializers
- From: Michael Ash <email@hidden>
- Date: Fri, 27 Mar 2009 11:01:04 -0400
On Fri, Mar 27, 2009 at 10:53 AM, Roland King <email@hidden> wrote:
> 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.
>
> I must have missed something
> here.
This covers how all that works:
http://mikeash.com/?page=pyblog/the-how-and-why-of-cocoa-initializers.html
The short answer is that if Foo returns something different, it will
return something that's compatible with Bar, so everything still works
fine.
Mike
_______________________________________________
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