I have read many posts about this now but I do not still understand it. I would appriciate an answer rather than a link because I probably already have read it.
if (self = [super init]) {
}
return self;
When I am calling the [super init] I know I am calling the method on “self”(the objects address) but I am starting the “method-search” in the superclass. When this returns I assign the object type id to self…This is where I am getting lost.
Am I assigning “self” as an initialized object up to the point of the superclass to self..?
I understand that I am doing this check to stop the initializing if the superclass implementation of the initializer returns nil however I dont understand what I am assinging to self….I thought self was an address to the current object in memory.
Thanks in advance
The assignment has always seemed a bit hacky to me. Its main point is that the superclass might want to return some other instance than the one that was initially allocated:
This is crazy indeed, but the fact is that
[super init]might return an object different from the previousself. See Mike Ash’s blog post, that should make thingssuperclear.