ARC and autorelease pools
ARC and autorelease pools
- Subject: ARC and autorelease pools
- From: Kevin Meaney <email@hidden>
- Date: Sun, 16 Feb 2014 13:27:31 +0000
I've realized that my understanding of ARC is not as good as I thought it was. So I'll be asking couple of questions.
With ARC I don't understand why autorelease pools are needed anymore except for with objects passed by reference. What I mean by that is that class methods like:
NSString *myString = [NSString stringWithFormat:@"%@", @"my string"];
Why do these methods need to return an autoreleased object, why can't they behave the same as:
NSString *myString = [[NSString alloc] initWithFormat:@"%@", @"my String];
Is the only reason for interoperability with manual retain-release code?
It seems that it creates an unnecessary complication when thinking about memory management. Now I'm assuming that any method like:
NSString *expandedPath = [myPath stringByExpandingTildeInPath];
returns an autoreleased string so I need to know this if I'm doing this with lots of strings and that I need to put my own autorelease pool in place, something I wouldn't have to think about if it wasn't an autoreleased object. Documentation doesn't provide any information as to which methods return an autoreleased object or not.
But since I can't call autorelease myself in ARC code if I have a method like.
KMImage *bigImage = [image kmImageByDoublingSize];
I'm not returning an autoreleased object so there is a difference in behaviour between the behaviour of methods in apple frameworks and the ones outside of those frameworks.
I've read a couple of posts on stackoverflow in relation to ARC and autorelease, but the justification given in the answers as to why autorelease is needed is because there are methods that return autoreleased objects so we need to have a mechanism to put auto release pools in place, which I feel is a little circular.
Is there something more fundamental that I'm missing beyond interoperability that means we still need autorelease pools or is it just that?
Kevin
_______________________________________________
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