Dans les deux OS X et iOS, Apple est à l'aide de la CGFloat typedef pour obtenir automatiquement une float
sur les systèmes 32 bits et un double
sur les systèmes 64 bits. Mais lors de l'utilisation de la normale Unix mathématiques fonctions dont vous avez besoin pour prendre une décision au cas par cas.
Par exemple, l' floor()
fonction est définie par:
double floor(double x);
et l' floorf()
fonction est définit comme:
float floorf(float x);
Je sais que tous les appareils iOS sont de 32-bit aujourd'hui, mais la raison d'utiliser des CGFloat est automatiquement obtenir une meilleure précision lors de la première 64-bit iOS dispositifs sont mis en place (iPad 5?) et ne pas avoir à changer le code. Mais pour rendre cela possible, nous avons besoin CGFloat de mathématiques sur les fonctions:
CGFloat Floor(CGFloat x);
Existe-il des fonctions comme dans d'iOS ou de tout tiers bibliothèques? Ou comment faire d'autres développeurs de gérer cela? Je soupçonne la plupart sont soit à l'aide d' CGFloat
ensemble avec l' float
-versions sur iOS, mais alors vous devez avoir besoin de modifier chaque ligne avec une fonction mathématique si la compilation pour un 64 bits appareil iOS (et poignée en deux versions différentes de votre base de code).
Ou vous pouvez simplement utiliser float
au lieu de CGFloat
partout et de ne pas se soucier 64-bit iOS. Mais alors, vous obtiendrez incohérence avec Apple bibliothèques et à mon humble avis plus laide du code.
Ou vous pourriez peut-être utiliser CGFloat
ensemble avec l' double
-versions et il suffit de prendre l'espace et les performances de laisser le compilateur convertir entre double et float tout le temps. Et ne pas se soucier de possibles "conversion Implicite à 32 Bits de Type" mises en garde.
Ou peut-être la meilleure stratégie, parier sur les pas de version 64 bits de iOS va jamais arriver (ou au moins dans un assez proche avenir) et l'utilisation CGFloat
avec float
-versions d'Unix, fonctions mathématiques et de ne pas se soucier de l'avenir.
Quelle stratégie utilisez-vous?