我有一个应用程序,在init方法上,我需要加载一个有很多背景的数组,并且这个数组在这个场景中保持有效,直到我离开它(并以dealloc发布)
在我的初学者中我有这个:
backgrounds=[ [NSArray alloc] initWithObjects:BACK,BACK1,BACK2,BACK3,BACK4,BACK5,BACK6,BACK7,BACK8,BACK9, nil];
int imageDelta=1;
for (background in backgrounds)
{
background.position=ccp(240*imageDelta,160);
imageDelta=imageDelta+2;
[self addChild:background ];
}
//release backgrounds here ????
现在,我的问题是,可以我和应该我现在发布backgrounds
?
我仍然需要这个数组在代码期间有效。
看起来我并没有真正了解数组。
非常感谢。
答案 0 :(得分:0)
不,因为背景没有被分配,所以你不需要关心它。
如果你没有明确地分配一个变量,它被标记为自动释放
答案 1 :(得分:0)
不,你不应该在init方法中释放那个背景数组,因为它是一个实例变量。你说它只能在dealloc中释放它是正确的,这就是你完成它的时候。
如果您在init方法中释放该背景数组,那么之后您将无法再次访问它,因为它将是一个已释放的实例。我认为你将背景数组作为实例变量的原因是因为你想再次访问它?
答案 2 :(得分:0)
如果你需要背景数组作为实例变量(你需要在对象生命周期中使用变量),所以你必须在dealoc中释放它。
如果只需要在init方法中使用背景数组,请将其更改为局部变量并使用:
NSArray *backgrounds = [NSArray initWithObjects:BACK,BACK1,BACK2,BACK3,BACK4,BACK5,BACK6,BACK7,BACK8,BACK9, nil];
所以你不必关心它,因为它是一个自动释放。