我有一个关于内存管理的问题。我有一个我之前在 init* 方法中分配的实例变量。在我的程序中,我保留了这个对象。在我的 dealloc 方法中,如果我将此对象设置为 nil,他会被正确地释放吗?让我举个例子。这是 Ah 类:
@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 将在 A 类上调用dealloc时, bvrariable会被正确释放吗?
我的猜测是否定的,因为我保留了这个对象,所以我必须调用release两次来释放那个对象。将对象设置为 nil 不会释放它们,因为我仍然向 bvrariable 对象发送消息。但有人告诉我相反。
有人可以启发我吗?
谢谢你的建议 !!