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 (Cocoa-dev@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to