Puis-je utiliser en toute sécurité CGFloat pour conserver les valeurs Float64 ou Float32?

J’ai une propriété CGFloat et parfois j’obtiens une valeur de retour de type Float64 ou également de type Float32. Puis-je stocker les deux en toute sécurité sur CGFloat?

À partir des en-têtes:

// CGBase.h typedef float CGFloat; // MacTypes.h typedef float Float32; typedef double Float64; 

Donc, CGFloat et Float32 sont tous les deux des float alors que Float64 est un double , vous Float64 donc de la précision.

(Modifier pour préciser: il s’agit de systèmes 32 bits tels que l’iPhone. Si vous construisez pour un système 64 bits, CGFloat est défini comme un double .)

Il est recommandé de toujours essayer de stocker les valeurs scalaires dans le même type que vous les avez reçues, car la précision des types scalaires change avec le matériel.

Il n’est pas toujours garanti que CGFloat ait la même taille sur tous les matériels actuels et futurs. Si vous le remplacez par un autre type ou si vous l’utilisez pour stocker un autre type, votre code est cassé quelque part par la suite.

Vous pourriez gagner ou perdre en précision lors de la sortie d’un nouvel iPhone / iPad ou le code risquerait de se briser si vous tentiez de le transférer vers un Mac.