重新分配给包含自动释放对象的指针是不正确的吗?

时间:2012-03-14 18:00:31

标签: objective-c cocoa memory-management autorelease alloc

以下结果是什么?

NSString *myStr = [[[NSString alloc] initWithString:@"Hello World."] autorelease];
myStr = [NSString stringWithString:@"Hello Again."];

myStr是否正确释放或是否崩溃,因为我们会在autorelease上调用myStr,现在设置为已经自动释放的字符串?

1 个答案:

答案 0 :(得分:4)

您的代码示例以您期望的方式工作。发送邮件后,autorelease无法以某种方式更改它引用的对象。 @"Hello World."@"Hello Again."对象是不同的对象,即使您的示例使用相同的指针变量来引用它们。