33 votes

Différence entre les int, NSInteger et NSUInteger

Quelle est la principale différence entre int, NSInteger et NSUInteger en Objective-C?

Qui est le meilleur à utiliser dans une application, et pourquoi?

26voto

Bastian Points 6086

Dans de tels cas, vous risquez de faire un clic droit et aller à la définition:

#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif

15voto

Zaph Points 40557

Le point est à l'abstraction des types et de leurs associés de la taille du matériel d'une manière que nous n'avons pas à s'inquiéter de ce que la taille d'un int est maintenant de savoir comment grand d'un pointeur sur n'importe quel matériel particulier.

"C" est mauvais à ce, indiquant seulement qu'une longue est au moins aussi grand qu'un int, un int est "naturel" de l'entier de la taille du matériel (quoi que cela signifie), qu'un int est au moins aussi longtemps qu'un court--un gros gâchis. Cela semblait être une bonne idée à la fois en provenance Fortran, mais n'a pas d'âge bien.

On pourrait utiliser la POSIX définit, des choses comme uint32_t, int16_t, etc, mais ce n'est pas la manière dont les grands un pointeur doit être sur n'importe quel matériel particulier.

Donc, si Apple définit le type de retour d'une NSUInteger vous utiliser et vous n'avez pas besoin de savoir si elle est de 16, 32 ou 64 bits de taille pour votre matériel particulier. (J'ai choisi ces valeurs out-of-the-air juste pour un exemple).

Comme vous pouvez le voir dans @Bastian la taille réelle dépend du matériel.

La documentation répond à la "lettre de la question", mais ne pas fournir une compréhension du "pourquoi"?

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: