Cher tout, j'ai une application basée sur la navigation avec environ 60 vues.iPhone App tombe en panne en raison de la mémoire faible, mais fonctionne bien dans le simulateur
J'ai couru avec les éléments suivants: 1. Construire et analyser: bulid réussit sans se plaint. 2. Allocation des instruments et fuites: pas de fuite.
Cependant, l'application est écrasé dans l'iPhone ou l'iPad, mais fonctionne très bien dans le simulateur. L'incident se produit vers la 50ème vue. Il n'y a pas de rapports d'erreur mais je vois LowMemory.log dans le dossier crashreporter.
J'ai mis à jour mon iPhone et iPad à 4,2
Est-ce que quelqu'un a des idées ce qui pourrait être mal? Je lis et dépanne depuis une semaine.
Merci pour toutes les réponses.
Mon application a une vue racine appelé contentViewController et les utilisateurs peuvent accéder à 4 jeux-questionnaires à partir d'ici.
Ceci est le code que j'utilise pour revenir à la vue racine.
- (void)goHome {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: @"Warning"
message: @"Proceed?"
delegate: self
cancelButtonTitle:@"Yes"
otherButtonTitles:@"No",nil];
[alert show];
[alert release];
}
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
[[self navigationController] setNavigationBarHidden:NO animated:YES];
if (buttonIndex == 0) {
NSArray * subviews = [self.view subviews];
[subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
self.view = nil;
if (self.contentViewController == nil)
{
ContentViewController *aViewController = [[ContentViewController alloc]
initWithNibName:@"ContentViewController" bundle:[NSBundle mainBundle]];
self.contentViewController = aViewController;
[aViewController release];
}
[self.navigationController pushViewController:self.contentViewController animated:YES];
}
}
Exemple de code pour les vues pousser:
-(IBAction) buttonArrowClicked:(id)sender {
NSURL *tapSound = [[NSBundle mainBundle] URLForResource: @"click"
withExtension: @"aif"];
// Store the URL as a CFURLRef instance
self.soundFileURLRef = (CFURLRef) [tapSound retain];
// Create a system sound object representing the sound file.
AudioServicesCreateSystemSoundID (
soundFileURLRef,
&soundFileObject
);
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![[defaults stringForKey:@"sound"] isEqualToString:@"NO"]) {
AudioServicesPlaySystemSound (soundFileObject);
}
if (self.exercise2ViewController == nil)
{
Exercise2ViewController *aViewController = [[Exercise2ViewController alloc]
initWithNibName:@"Exercise2ViewController" bundle:[NSBundle mainBundle]];
self.exercise2ViewController = aViewController;
[aViewController release];
}
[self.navigationController pushViewController:self.exercise2ViewController animated:YES];
}
Merci pour toutes les réponses. J'ai ajouté quelques codes pour votre avis – Ian
Désolé réalisé que j'ai posté double. S'il vous plaît se référer à http://stackoverflow.com/questions/4281713/iphone-app-crashes-due-to-low-memory-but-works-fine-in-simulator – Ian
Merci beaucoup de m'avoir sauvé. Mon application ne semble pas tomber en panne maintenant! Il se bloque toujours dans mes appareils lorsque je cours en mode débogage. Cependant, il fonctionne bien dans mes appareils lorsqu'il est connecté. Est-ce normal? – Ian