Когда вы отправляете сообщение -autorelease
объекту, оно добавляется к активному NSAutoreleasePool
, которое очищается при запуске цикла выполнения. Если вы скажете [_previous autorelease]
, только этот объект будет автоматически освобожден, а если вы скажете _previous = obj
, это только изменит ссылку на переменную. Старый объект все еще автоматически освобожден.
Если вы делаете это в методе установки, это, как правило, шаблон:
- (void)setSomeObject:(MyObjClass *obj) {
if (obj != someObject) {
[someObject release];
someObject = [obj retain]; // or copy, depending on what you want
}
}