2009-03-27 9 views
5

En tant que test, je fais ce qui suit comme la première ligne applicationDidFinishLaunching:NSArray initWithObjects: ne se charge pas

NSArray *list=[[NSArray alloc] initWithObjects:@"Andy",@"Erik",@"Aaron",nil]; 

Après la ligne fonctionne, j'ai zéro objets dans le tableau. Je fais cela plus loin dans le chemin du code mais je voulais éliminer toute influence pour m'assurer que ma syntaxe est correcte. Je reçois les mêmes résultats avec NSMutableArray. Dans le débogueur, je souris sur le nom du tableau pour voir s'il a des valeurs.

Quand je souris sur le nombre dans la ligne suivante, je vois « varaible optimisé awa ... Résumé »:

int count = [list count]; 

Toute suggestion pourquoi le tableau ne remplit pas et pourquoi le nombre ne donne pas de retour un nombre entier?

Répondre

6

Ce qui se passe, c'est que vous n'utilisez pas la variable 'count' et le compilateur optimise cela.

1) Essayez d'exécuter en mode débogage au lieu du mode édition. Le mode débogage n'optimisera pas les tâches, vous devriez donc voir la variable count donner le bon résultat en passant la souris dans le débogueur. Vous pouvez changer la configuration active pour déboguer de la version en cliquant sur la barre déroulante en haut à gauche de xcode.

2) Utilisez la variable 'count' dans votre code. Notez que dans la version de construction, les choses peuvent se produire dans le désordre, si c'est ce que le compilateur veut faire. Par exemple, si vous avez quelque part votre instruction d'initialisation de compte, et que vous utilisez 'count' plus bas dans votre code, 'count' peut ne pas être défini avant où 'count' est réellement utilisé.

+0

Merci. Était accidentellement en mode de distribution pour ad hoc. Étrange comment ça saute comme ça. – 4thSpace

Questions connexes