Utiliser CGFloat au lieu de float ?Ils ne le font pas
-
13-09-2020 - |
Question
[Je comprends peut-être mal tout ce sujet, car j'ai grandi avec des langages qui permettent au développeur d'ignorer presque entièrement l'architecture du processeur, comme Java, sauf dans certains cas particuliers. Veuillez me corriger si certains concepts sont erronés.]
En lisant ici il semble que le conseil soit d'utiliser CGFloat au lieu, disons, float, car cela pérennise mon code pour différentes architectures de processeur (les poignées 64 bits flottent différemment).En supposant que c'est vrai, alors pourquoi UISlider
, par exemple, utilisez float
directement (pour la valeur) ? Ne serait-ce pas une erreur (ou quelque chose du genre) de ma part de lire leur float
et convertissez-le en un CGFloat
, parce que de toute façon mon code n'est pas bon si l'architecture change quand même ?
La solution
CGFloat
est juste un typedef
pour float
.Cela offre une flexibilité pour CGFloat
être quelque chose de différent sur la route.C'est pourquoi son utilisation assure la pérennité de votre code.Objective-C fait cela avec de nombreux types, NSInteger
est un autre exemple.
Bien qu'ils puissent être utilisés de manière interchangeable, je conviens que cela n'apparaît pas dans le cas de UISlider
qu'Apple était nourriture pour chiens.
Autres conseils
CGFloat fait partie de Core Graphics et est utilisé pour des choses comme les valeurs de pixels, qui ont beaucoup changé au fil des ans (quelqu'un ici est-il amateur du TRS-80 ?).Il est donc conseillé d'utiliser CGFloat pour l'affichage des valeurs de dessin liées.
La valeur du curseur n'est pas liée au graphique.Il s'agit simplement de 0,0 à 1,0, qui peut être géré avec précision par un flottant, et probablement un flottant de 16 bits en plus.