NSString __weak *string;
@autoreleasepool {
string = [NSString stringWithFormat:@"%@", @"AAA"];
}
NSLog(@"string: %@", string);
выводит следующее, что вы хотите.
string: (null)
Таким образом,
string = [NSString stringWithString:@"AAA"];
совпадает с
string = @"AAA";
константной строкойлитерал, который не размещен в куче.
РЕДАКТИРОВАНИЕ:
переменная str все еще имеет сильную ссылку на объект автоматического освобождения.
Следующий кодчто именно вы хотите.
NSString __weak *string;
{
NSString __strong *str;
@autoreleasepool {
str = [NSString stringWithFormat:@"%@", @"AAA" ];
string = str;
}
}
NSLog(@"string: %@", string);
А
NSString __weak *string;
@autoreleasepool {
NSString __strong *str;
str = [NSString stringWithFormat:@"%@", @"AAA" ];
string = str;
}
NSLog(@"string: %@", string);