У меня вопрос об управлении памятью. У меня есть переменная экземпляра, которую я ранее выделил в методе init *. В какой-то момент в моей программе я сохранил этот объект.
В моем методе dealloc, если я установлю этот объект на nil, он будет правильно освобожден?
Позвольте мне показать пример. Это класс A.h:
@interface A: NSObject {
B *bvariable;
}
-(id) init;
и его реализация:
@implementation A
-(id) init: {
bvariable= [[B alloc] init];
/**
* Let say for some reason, I called
*/
[bvariable retain];
}
}
-(void) dealloc {
bvariable = nil;
[super dealloc];
}
У меня вопрос: когда GC вызовет dealloc в классе A, будет ли bvrariable правильно освобожден?
Мое предположение - нет, потому что, поскольку я сохранил этот объект, я должен дважды вызвать release , чтобы освободить этот объект. Установка объекта в nil не освобождает их, так как я все еще отправляю сообщения объекту bvrariable.
Но кто-то сказал мне обратное.
Может кто-нибудь просветить меня, плз?
Спасибо за ваш совет !!