2010-08-10 4 views
0

У меня был этот вопрос раньше, попробовал как ответил, но все равно он не работает.iphone UIImage массив утечки памяти

Перед тем, как наделенный:

imageArray_danceright = [[NSArray alloc] initWithObjects: 

Я пришел посоветовал сделать как сильфона, но теперь это крах немедленно после того, как второй аним называется:


//init areas: 

imageArray_stand = [NSArray arrayWithObjects: 
[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"FrankieSingtRetime_0001" ofType:@"jpg"]], 
[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"FrankieSingtRetime_0002" ofType:@"jpg"]], 
[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"FrankiePeaceRetime_0003" ofType:@"jpg"]],nil]; 


imageArray_danceleft = [NSArray arrayWithObjects: 
[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"FrankiePeaceRetime_0001" ofType:@"jpg"]], 
.. 40 images 
[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"FrankiePeaceRetime_0040" ofType:@"jpg"]],nil]; 

imageArray_danceright = [NSArray arrayWithObjects: 
[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"FrankiePeaceRetime_0041" ofType:@"jpg"]], 
.. 40 images 
[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"FrankiePeaceRetime_0080" ofType:@"jpg"]],nil]; 


//start: 
[myimageview setAnimationImages:imageArray_stand]; 


myimageview.animationDuration = 0.23; 
myimageview.contentMode = UIViewContentModeBottomLeft; 
myimageview.animationRepeatCount = 0.0; 
myimageview.image = [myimageview.animationImages objectAtIndex:1]; 
[myimageview startAnimating]; 


// ------ in my 'touchesBegan" i have: 

if ([touch view] == overlay_fuesserechts) { 
    [myimageview.animationImages release]; 
    [myimageview setAnimationImages:imageArray_danceright]; 

    myimageview.animationDuration = 2.0; 
    myimageview.contentMode = UIViewContentModeBottomLeft; 
    myimageview.animationRepeatCount = 0; 
    [myimageview startAnimating]; 
} 


- (void)dealloc { 
[imageArray_stand release]; 
imageArray_stand=nil; 
[imageArray_danceright release]; 
imageArray_danceright=nil; 
[imageArray_danceleft release]; 
imageArray_danceleft=nil;  
    super dealloc]; 
} 

Ее начинается с анимацией «стенд» .. но когда я стреляю, он мгновенно падает:

[myimageview setAnimationImages:imageArray_danceright]; 

и я понятия не имею. Я пробовал так много всего. Теперь я надеюсь, что у вас есть идея.

ТНХ Крисом

+0

любой журнал @ console? –

+0

нет .. это проблема .. это просто остановка. Я сделал NSLog до и после [myimageview setAnimationImages: imageArray_danceright]; по этой причине я знаю, что там разбился :) –

ответ

0

Поскольку вы создаете автореализацию своих графических массивов, к моменту, когда он добирается до TouchesBegan, они уже выпущены. Кто Вам предлагал использовать arrayWithObjects вместо alloc - initWithObjects? Похоже, что ваша более ранняя версия была бы более правильной. В чем была проблема, с которой вы столкнулись?

+0

Прежде, чем он сработал просто отлично ... проблема в том, что он не выпустил Memory, и поэтому после 4-го аниматора (я мог видеть в «Инструменты/Распределение») он получил 100 МБ и разбился. Я бы даже опубликовал свой старый код еще раз, если вы хотите помочь :) –

+0

Я бы опубликовал старый код – philsquared

+0

'[myimageview.animationImages release];' тоже выглядит для меня неправильно. Я бы сделал это 'myimageview.animationImages = nil;' – philsquared

0

Вы, конечно, не нужен [myimageview.animationImages release]; в начале штрихами стали. Вы создаете объекты с автореализованным массивом и приспосабливаете их к представлению изображения, которое их выпускает.

+0

ok .. я удалил [myimageview.animationImages release]; но все равно это просто сбой, когда [myimageview setAnimationImages: imageArray_danceright]; уволен ?? –

Смежные вопросы