В Objective-c autoReleased Объекты освобождаются, если на них больше нет указателей? - PullRequest
0 голосов
/ 24 февраля 2011

Просто из любопытства ... Если я изменю указатель так, чтобы он указывал на другой автоматически выпущенный экземпляр, предыдущий автоматически выпущенный экземпляр, на который указывал указатель, автоматически освобождается? Например ...

NSString pStr* = [NSString stringWithString:@"instance One"];
// do sth with pStr
pStr = [NSString stringWithString:@"Instance two"];
// do sth else with pStr

Оба экземпляра автоматически выпущены ??

1 Ответ

2 голосов
/ 24 февраля 2011

Да.Жизненный цикл объектов на самом деле не зависит от того, какие переменные указывают на них (в отличие от сред с сборкой мусора).Вот почему возможно иметь переменную, указывающую на освобожденный объект или иметь утечки памяти: объекты сохраняются навсегда без ссылок на них.

Жизненный цикл зависит от того, как создаются объекты и как вы используете методы retain, release и autorelease.

Более подробно это описано в Какао руководство по управлению памятью .

...