9
votes

Devrais-je utiliser Nsnumber au lieu des types de numéro de base C?

Quel est l'avantage d'utiliser nsnumber à partir du cadre de fondation au lieu de types de base C (int, flotteur, double)?

Utilisation de NSNumber: xxx

en utilisant pur c: xxx

semble beaucoup plus facile et économique à utiliser c.

Je sais nsnumber est un type objet (ou classe?), mais pourquoi les utiliserais-je à la place des variables C simples? Quand devrais-je les utiliser?


0 commentaires

3 Réponses :


18
votes

Le but de nsnumber est simplement de casser les types primitifs des objets (types de pointer), vous pouvez donc les utiliser dans des situations nécessitant des valeurs de type pointeur pour fonctionner.

Un exemple courant: vous devez utiliser nsnumber si vous souhaitez persister les valeurs numériques dans les entités de données de base.

Vous pouvez et devez utiliser des primitives pour des calculs (sauf avec des décimales, auquel cas vous utilisez nsdecimal ou nsdecimalnumate ).


1 commentaires

+1 Les classes de collection de la Fondation n'acceptent que des objets, pas des primitives.



0
votes

Parce que pour traiter le passage de paramètres avec certains objets, l'utilisation d'un type de données de base ne fonctionnera pas. En outre, la classe NSNumber vous donne des options pour convertir rapidement des valeurs dans d'autres types de données.


0 commentaires

3
votes

Si vous devez passer un numéro sous forme d'objet, utilisez nsnumber .

Si vous devez effectuer des opérations arithmétiques, vous pouvez utiliser int et double . Si vous ne voulez pas vous soucier des problèmes 32/64 bits, vous pouvez utiliser nsinteger et cgfloat .


0 commentaires