how do ARC in objectiveC changes autorelease usage? (for instance in the description method)
===

coming from a pre ARC way of thinking of retaining and releasing, i'm trying to wrap my head around ARC in objectiveC.

in the pre ARC days any method returning a newly created instance would use the autorelease pool.


    - (NSString *)description {
         NSString *output = [NSString stringWithFormat:@"max size is: %d", maxSize];
         return output;
     }

it was the receiver of this newly created instance's job to retain it.

I'm curious. in the ARC world, can you do this?

    - (NSString *)description {
         NSString *description = [[NSString alloc] initWithFormat:@"max size is: %d", maxSize];
         return description;
    }

is this technically possible? is it logical?
i mean - it feels wrong. it disturbs the retain counting doesn't it?

my question applies also to different getters. for instance:

    - (NSArray *)items {
        return [NSArray arrayWithArray:items];
    }

can be


    - (NSArray *)items {
        return [[NSArray alloc] initWithArray:items];
    }

i understood that the ARC adds the retain and release messages for you.
i'd love to understand how this works in these cases.
