36 votes

Existe-t-il des types NSDouble, NSFloat ou autres que NSInteger?

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 ?

82voto

duskwuff Points 69245

NSInteger existe parce que la taille du type int varie entre les systèmes 32 bits et 64 bits. float et double ne varient pas de taille de la même manière, il n'est donc pas nécessaire de leur attribuer des types d'emballage.

5voto

Kevin Grant Points 3208

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.

0voto

pmau Points 114

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X