2010-05-31 10 views
0
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Congratulations" message:message delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"View", nil]; 
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(110, 100, 80, 80)]; 
NSString *imagePath = [NSString stringWithFormat:@"%@", [Array objectAtIndex:x]]; 
UIImage *bkgImg = [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:imagePath ofType:@"png"]]; 
imageView.image = bkgImg; 
[bkgImg release]; 
[alert addSubview:imageView]; 
[imageView release]; 
[alert show]; 
[alert release];  

C'est le code que j'utilise pour créer la vue d'alerte. Actuellement, je l'ai mis en place donc si l'utilisateur appuie sur l'un des boutons, il va charger un nouveau viewcontroller. Cela a bien fonctionné jusqu'à ce que j'ajoute une sous-vue à l'UIAlertView. Maintenant, chaque fois qu'il anime le nouvel écran, il bloque simplement le programme. Je suis relativement nouveau dans le développement de l'iPhone et toute aide serait appréciée.UIAlertView avec sous-vue animée pour une nouvelle vue plante l'application

+0

Pouvez-vous publier le journal des pannes? Il peut contenir des informations pour aider à trouver la source de l'accident. –

Répondre

1

Vous faites:

UIImage *bkgImg = [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:imagePath ofType:@"png"]]; 
... 
[bkgImg release]; 

Mais +imageWithContentsOfFile renvoie un autoreleased exemple UIImage, vous devriez donc pas version vous-même. Ce qui est probablement en train de se produire, c'est que NSAutoreleasePool envoie un -release à un objet qui a déjà été désalloué, provoquant le plantage de l'application plus tard.

Je vous recommande de jeter un oeil à http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html (ou à des docs iPhone équivalents si ceux-ci existent).