2010-08-11 7 views
0

Je regardais les vidéos de la WWDC 2010 et j'ai maintenant commencé à explorer les fonctionnalités de l'outil Construire et analyser dans xcode 3.2. C'est un excellent outil qui mettra en évidence les erreurs de codage (spécialement pour un nouveau venu comme moi!) Même si elles n'ont pas d'impact pendant l'exécution.xcode Créer et analyser des questions connexes

Mais il y a une chose que j'aurais besoin d'aide pour comprendre.

Lorsque je pousse un nouveau contrôleur de vue avec ce code:

SettingsViewController *nextController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil]; 

My_AppAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 

[delegate.myNavController pushViewController:nextController animated:YES]; 

L'analyseur me dit qu'il ya une fuite de mémoire. Je peux comprendre cela d'une certaine façon, car j'alloue le NextController mais je ne le libère jamais. Mais si j'essaie de le libérer, mon application se bloque. Je n'obtiens aucune fuite lors de l'analyse avec Instruments sur le simulateur et le périphérique physique.

Apple arrêterait-elle cette application ou passerait-elle les tests?

Répondre

0

Soumis l'application à Apple et il est passé.

1

Vous ne serez probablement pas rejeté pour des fuites à moins qu'elles ne conduisent à un avertissement de mémoire non gérée et à un crash. Cela dit, le problème spécifique que vous mentionnez peut être corrigé en utilisant autorelease.

SettingsViewController *nextController = [[[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil] autorelease]; 

Le contrôleur de navigation doit conserver le contrôleur de vue pendant toute sa durée de vie.

+0

Merci pour la proposition. Je l'ai testé et cela fonctionne très bien dans la construction et l'analyse et la première fois que je pousse le contrôleur. La deuxième fois que je le fais, l'application plante. Comment est-il avec autorelease et iOS? D'après ce que je comprends il n'y a pas de ramassage des ordures dans iOS, mais dans certains endroits, ils se réfèrent toujours à autorelease ... – Structurer

+0

Je vous recommande fortement de lire le guide de programmation de gestion de la mémoire d'Apple. Je n'ai pas de lien à portée de main, mais il répondra à plus de questions que n'importe quel commentaire ici. – Justin

Questions connexes