Lors de l'introspection sur une classe, j'utiliser le code suivant:Objectif C Introspection
if([object isKindOfClass:[NSNumber class]]){
NSLog(@"I am an NSNumber: %@", object);
}
NSLog(@"Properties:%@", [object class]);
La sortie est:
I am an NSNumber: 320
Properties:__NSCFNumber
Quelqu'un peut-il expliquer pourquoi le résultat est __NSCFNumber pour le type NSNumber? J'ai aussi remarqué NSArray est identifié comme:
__NSArrayI
En outre, j'imagine que '__NSCFNumber' dérive spécifiquement du pont sans frais entre' NSNumber' et 'CFNumber'. Des résultats similaires se produisent à partir de '[@" "class]' ('__NSCFString'). –
Il y a aussi le "pont gratuit", qui représente le nom drôle de la classe NSCFNumber, puisque la même classe existe essentiellement dans l'environnement Objective-C (NS) et l'environnement Core Foundation (CF), et les deux peuvent être utilisés indifféremment . –
Merci - c'est logique. Je viens d'un arrière-plan Java et C#, où c'est essentiellement comme "programmer vers l'interface" (si je comprends bien) – PhillyNJ