I've seen it claimed that the following are "pretty much equivalent":
foo([NSString stringWithString:@"blah"]) # version 1
foo([[[NSString alloc] initWithString:@"blah"] autorelease]) # version 2
Are the above in fact literally equivalent or are there any subtle differences? What are reasons to prefer one or the other?