2011-01-04 2 views
0

Je suis assez confus. J'utilise les cadres d'animation pour faire bouger les objets. Voici le code:désallouer NSArray Vs libérer NSArray

campFireView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 80, 63)]; 


campFireView.animationImages = [NSArray arrayWithObjects: 
           [UIImage imageNamed:@"campFire01.png"], 
           [UIImage imageNamed:@"campFire02.png"], 
           [UIImage imageNamed:@"campFire03.png"], 
           [UIImage imageNamed:@"campFire04.png"], 
           [UIImage imageNamed:@"campFire05.png"], 
           [UIImage imageNamed:@"campFire06.png"], 
           [UIImage imageNamed:@"campFire07.png"], 
           [UIImage imageNamed:@"campFire08.png"], 
           [UIImage imageNamed:@"campFire09.png"], 
           [UIImage imageNamed:@"campFire10.png"], 
           [UIImage imageNamed:@"campFire11.png"], 
           [UIImage imageNamed:@"campFire12.png"], 
           [UIImage imageNamed:@"campFire13.png"], 
           [UIImage imageNamed:@"campFire14.png"], 
           [UIImage imageNamed:@"campFire15.png"], 
           [UIImage imageNamed:@"campFire16.png"], 
           [UIImage imageNamed:@"campFire17.png"], nil]; 


campFireView.animationDuration =2.5; 

campFireView.animationRepeatCount = 0; 


[campFireView startAnimating]; 

[bgview addSubview:campFireView]; 

[campFireView release]; 

S'il vous plaît me dire comment release ce genre de NSArray? Je n'ai pas utilisé alloc dans le code, alors comment release ce tableau car il provoque beaucoup de fuite dans mon code.

+0

'campFireView' est-il un ivar? Je ne vous vois pas le déclarer ici. – BoltClock

Répondre

3

comment release ce genre de NSArray?

Vous n'en avez pas. Votre fuite est probablement causée ailleurs dans votre code parce que ce que je vois ici ne devrait pas fuir tout seul.

+1

BoltClock a raison. Tout ce qui concerne ce NSArray dans votre code sera pris en charge par le pool autorelease. –

+0

okies donc une chose de plus je veux demander ... m en utilisant le même code avec 60 cadres avec le feu de camp .. est-ce bien ??? ou est-ce la cause de fuite ?? –

+0

Ne devrait pas être un problème. – BoltClock

1

NSArray est auto-libéré. Si vous avez vraiment des fuites, c'est d'ailleurs.

0

Aucune fuite avec array, arrayWithObjects: donne un objet autorelease.

Je pense que vous lancez aussi CampFireView dans dealloc. vous devez créer une propriété de type retriver pour campFireView et la libérer dans le dealloc ici.

1

Vous n'avez pas besoin de libérer NSArray. Vous l'utilisez avec NSArray arrayWithObjects. Cela signifie que vous ne possédez pas l'objet, vous n'avez donc pas à le libérer.