Voici le pseudo-code de votre programme:
//
// Inside of your main function....
//
// Set up the Autorelease pool and then create an array
//
// Declare an int
//
// Add the int to an array, while wrapping it in an NSNumber
//
// Log the value of the first object in the array, using the int formatter
//
// Clean up and return
//
Vous connectez le premier objet du tableau, mais NSArray
ne peut pas tenir une primitive ce n'est pas enveloppé dans un objet Objective-C.
Pour mieux comprendre votre code, essayez de changer ces lignes de code:
int someNumber = 3;
[array addObject:[NSNumber numberWithInt:someNumber]];
les développer un peu. Essayez ceci:
int someNumber = 3;
NSNumber *aNumber = [NSNumber numberWithInt:someNumber];
[array addObject:aNumber];
Donc, vous avez correctement mise la int
dans un NSNumber
, mais vous n'êtes pas le déballer. Vous devez demander à votre NSNumber
pour le int
qu'il détient comme ceci:
[[array objectAtIndex:0] intValue];
Ou, pour faire l'enregistrement en une ligne:
NSLog(@"%i" , [[array objectAtIndex:0] intValue]);
Les caractères « %i
» est appelé « formatter » . Différents types de valeurs nécessitent différents formateurs. Lorsque vous utilisez un objet Objective-C, vous utilisez "%@
". Pour un NSInteger
ou int
, vous utiliseriez %i
. Pour un flottant, vous utiliseriez "%f
". Le fait est que vous devez soit déplier ce nombre, soit utiliser le formateur Objective-C pour les chaînes.
Une note rapide sur cette valeur étrange que vous receviez plus tôt: C'est une adresse mémoire dans la RAM. C'est la chose la plus proche que vous obtiendrez en utilisant un formateur incorrect. Dans certains cas, l'utilisation du mauvais formateur provoquera un EXC_BAD_ACCESS. Vous étiez "chanceux" et obteniez une valeur étrange au lieu d'un programme mort. Je suggère d'en apprendre plus sur les chaînes et les formateurs avant de passer à autre chose. Cela rendra votre vie beaucoup plus facile.
Droite? – Monkeyanator
Et oui, cela a fonctionné, mais je suis un peu confus sur pourquoi ... – Monkeyanator
@Monkeyanator objectAtIndex: 0 est un objet, un NSNumber. – ThomasW