Неправильно ли переназначить указатель, который содержит автоматически выпущенный объект? - PullRequest
1 голос
/ 14 марта 2012

Каков результат следующего?

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

Правильно ли выпущен myStr или происходит сбой, поскольку мы будем вызывать autorelease для myStr, который теперь настроен на строку, которая уже автоматически освобождена?

1 Ответ

4 голосов
/ 14 марта 2012

Ваш пример кода работает так, как вы ожидаете. autorelease не может каким-то образом изменить объект, на который он ссылается после отправки сообщения. Объекты @"Hello World." и @"Hello Again." являются разными объектами, даже если в вашем примере для ссылки на них используется одна и та же переменная указателя.

...