Objectif C. Coulée int pour flotter
Désolé pour ces question d'ordre général, mais ce qui est le meilleur (le plus vite possible et le plus de sécurité) méthode pour convertir en int en float en ObjC:
Première
int b = 10;
float a = [[NSNumber numberWithInt: b] floatValue]
Il y aura NSNumber
instance et les messages numberWithInt
floatValue
sera envoyer, non?
Deuxième
int b = 10;
float a = (float) b;
C-style: cette avec certains sous-routine?
Ou de quelque autre manière?
Et pourquoi?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
La C-type de style de fonte est la plus claire et la plus facile à lire. S'il m'est arrivé de trouver un code qui créé un
NSNumber
objet juste pour faire la conversion, il voulait me quitter en me demandant: "Pourquoi l'a-t-il de cette façon? Est quelque chose qui se passe ici, autre qu'un simple vieux type de conversion? Ce qui me manque?"Comme pour la vitesse, je pense que la simple conversion de type serait également plus rapide - le
NSNumber
objet devrez effectuer à peu près la même opérations pour faire la conversion, et a la charge supplémentaire de la création de l'objet et de la messagerie sur le dessus de cela. Mais dans tous les cas, n'essayez pas de deviner - mesure. Le profil de votre code pour voir si la conversion est un goulot d'étranglement qui est assez important pour être digne de votre attention.Depuis que vous vous posez sur la sécurité, la première chose que vous devez vérifier est de savoir si la valeur de votre
int
s'inscrit dans unfloat
. Sinon, vous êtes en silence de perdre des données. À moins que la valeur est assez petite, elle ne rentre pas. Je voudrais passer à l'utilisation dedouble
de sorte que vous n'avez pas à vous inquiéter à ce sujet, puis il suffit de procéder à la cession:Il est rarement utiliser pour les variables de type
float
à l'instar deshort
...Je ne vois vraiment pas la nécessité d'une
NSNumber
de l'objet lors d'un direct catalogué entre les deux numérique primitives est disponible. LeNSNumber
classe n'a pas été conçu uniquement pour la conversion de type, de toute façon.