173 votes

Quelle est la différence entre l'utilisation de CGFloat et float ?

J'ai tendance à utiliser CGFloat partout, mais je me demande si je n'obtiens pas un "coup de performance" insensé avec cela. CGFloat semble être quelque chose de plus "lourd" que float, non ? À quels endroits devrais-je utiliser CGFloat, et qu'est-ce qui fait vraiment la différence ?

196voto

Quinn Taylor Points 29688

Comme @weichsel l'a dit, CGFloat est juste un typedef pour soit float ou double . Vous pouvez vous en rendre compte par vous-même en double-cliquant sur "CGFloat" dans Xcode - cela vous amènera à l'en-tête CGBase.h où le typage est défini. La même approche est utilisée pour NSInteger et NSUInteger.

Ces types ont été introduits pour faciliter l'écriture de code qui fonctionne à la fois sur 32 et 64 bits sans modification. Cependant, si tout ce dont vous avez besoin est float à l'intérieur de votre propre code, vous pouvez toujours utiliser float si vous le souhaitez - cela réduira quelque peu votre empreinte mémoire. Il en va de même pour les valeurs entières.

Je vous suggère d'investir le temps modeste requis pour rendre votre application 64 bits propre et d'essayer de l'exécuter en tant que telle, puisque la plupart des Macs ont maintenant des processeurs 64 bits et que Snow Leopard est entièrement 64 bits, y compris le noyau et les applications utilisateur. Le site d'Apple Guide de transition vers le 64 bits pour Cocoa est une ressource utile.

76voto

weichsel Points 20483

CGFloat est un flottant ordinaire sur les systèmes 32 bits et un double sur les systèmes 64 bits

typedef float CGFloat;// 32-bit
typedef double CGFloat;// 64-bit

Vous n'aurez donc aucune pénalité de performance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X