Je veux obtenir le type de l'instance NSNumber.
Je l'ai découvert sur http://www.cocoadev.com/index.pl?NSNumber ceci :
NSNumber \*myNum = \[\[NSNumber alloc\] initWithBool:TRUE\];
if (\[\[myNum className\] isEqualToString:@"NSCFNumber"\]) {
// process NSNumber as integer
} else if (\[\[myNum className\] isEqualToString:@"NSCFBoolean"\]) {
// process NSNumber as boolean
}
Ok, mais cela ne fonctionne pas, le [myNum className] n'est pas reconnu par le compilateur. Je compile pour l'iPhone.
11 votes
Ceci est potentiellement fragile. NSCFNumber et NSCFBoolean sont privés et il n'y a aucune garantie que ceux-ci continueront à être les noms de classe dans le futur.
0 votes
Que diriez-vous de if([maNum classe] == [[NSNumber nombreWithBool:YES] classe])
0 votes
@GlennHowes Aucune garantie que cela donnera le bon résultat. Vous faites la même supposition que @okami ; que les interfaces privées ne changeront jamais.