Chez In Cocoa, préférez-vous NSInteger ou tout simplement int, et pourquoi? , il était fait mention de NSDouble
et NSFloat
, mais je ne vois aucune référence pour ceux-ci dans aucune documentation. Si l'objectif de NSInteger
est la sécurité architecturale, qu'en est-il des autres types tels que double
ou float
?
Réponses
Trop de publicités? Il n’existe pas de NSFloat
mais je sais que l’API Core Graphics a finalement changé de float
à CGFloat
afin de pouvoir utiliser un double
sur certains architectures.
Il est préférable d'utiliser les types exacts déclarés par les en-têtes d'API. Cela rend les modifications de type automatiques si vous recompilez votre code pour une cible différente.
Il est également question de conventions.
Un typedef int est incompatible int int lui-même.
Exemple: pid_t est de type int, mais le passage d'un int créerait un avertissement.
Pourquoi? Parce que vous voulez être sûr que si vous croisez API limites tout le monde sait ce que le code prévoit.
Il y a les types float et double, j'.e NSTimeInterval. Il n'est pas vraiment sur le type sous-jacent, mais la convention à adhérer.
Si vous déclarez un local int comme un compteur de boucle, et vous ne prévoyez pas de les transmettre à un domaine bien défini de l'API, c'est bien d'appeler un int int.