NSString __weak *string;
@autoreleasepool {
string = [NSString stringWithFormat:@"%@", @"AAA"];
}
NSLog(@"string: %@", string);
it outputs as the following what you want.
string: (null)
Thus,
string = [NSString stringWithString:@"AAA"];
is same as
string = @"AAA";
the constant string literal that is not allocated in the heap.
EDITED:
str variable has still strong reference for the autoreleased object.
The following code is what exactly you want.
NSString __weak *string;
{
NSString __strong *str;
@autoreleasepool {
str = [NSString stringWithFormat:@"%@", @"AAA" ];
string = str;
}
}
NSLog(@"string: %@", string);
And
NSString __weak *string;
@autoreleasepool {
NSString __strong *str;
str = [NSString stringWithFormat:@"%@", @"AAA" ];
string = str;
}
NSLog(@"string: %@", string);