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 ?
Réponses
Trop de publicités?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.