2011-01-04 24 views
0

Ich bin ziemlich verwirrt. Ich benutze die Animationsframes, um die Objekte zu bewegen. Hier ist der Code:Freigabe NSArray Vs Freigabe 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]; 

Bitte sagen Sie mir, wie man release solche Art von NSArray? Ich habe keine alloc im Code verwendet, so wie zu release dieses Array, da es eine Menge Leck in meinem Code verursacht.

+0

Ist 'campFireView' ein ivar? Ich sehe nicht, dass du es hier irgendwo deklarierst. – BoltClock

Antwort

3

wie zu release eine solche Art von NSArray?

Sie nicht. Ihr Leck wird höchstwahrscheinlich an anderer Stelle in Ihrem Code verursacht, weil das, was ich hier sehe, nicht von selbst auslaufen sollte.

+1

BoltClock ist richtig. Alles, was mit diesem NSArray in Ihrem Code zu tun hat, wird vom Autorelease-Pool erledigt. –

+0

okies so noch eine Sache, die ich fragen möchte ... m mit dem gleichen Code mit 60 Rahmen zusammen mit dem Lagerfeuer .. ist es in Ordnung ??? oder ist es die Ursache von Leck? –

+0

Sollte kein Problem sein. – BoltClock

1

Das NSArray ist Autoreleased. Wenn Sie wirklich leckt, ist es von woanders.

0

Kein Leck mit Array, ArrayWithObjects: gibt ein AutoRelease-Objekt.

ich denke, Sie veröffentlichen campFireView in Dealloc auch. Sie müssen die Eigenschaft retain type für campFireView erstellen und sie in dealloc hier veröffentlichen.

1

Sie müssen das NSArray nicht freigeben. Sie verwenden es mit NSArray arrayWithObjects. Das bedeutet, dass Sie das Objekt nicht besitzen, daher müssen Sie es nicht freigeben.