I’m still trying to understand this piece of code that I found in a project I’m working on where the guy that created it left the company before I could ask.
This is the code:
-(void)releaseMySelf{
for (int i=myRetainCount; i>1; i--) {
[self release];
}
[self autorelease];
}
As far as I know, in Objective-C memory management model, the first rule is that the object that allocates another object, is also responsible to release it in the future. That’s the reason I don’t understand the meaning of this code. Is there is any meaning?
The author is trying to work around not understand memory management. He assumes that an object has a retain count that is increased by each retain and so tries to decrease it by calling that number of releases. Probably he has not implemented the “is also responsible to release it in the future.” part of your understanding.
However see many answers here e.g. here and here and here.
Read Apple’s memory management concepts.
The first link includes a quote from Apple