我有一个关于内存管理的问题。我有一个实例变量,我以前在init *方法中分配过。在我的程序中,我保留了这个对象。 在我的dealloc方法中,如果我将这个对象设置为nil,他会被正确释放吗? 让我举个例子。这将A.H类:关于iOS中内存管理的问题
@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正确释放?
我的猜测是没有,因为我保留这个对象,所以我必须拨打版本两次释放该对象。将对象设置为零将不会释放它们,因为我仍然将消息发送给可移动对象。 但有人告诉我相反。
有人能让我想起吗?
感谢您的咨询!
alloc/init/retain/copy全部返回+1保留计数。 – 2011-12-28 10:12:31