Par exemple, lors de la transmission d'un value
message à une NSInteger
instance comme celle-ci
[a value]
cela provoque un EXC_BAD_ACCESS.
Alors, comment convertir un NSInteger
en int
?
Si c'est pertinent, seuls de petits nombres <32 sont utilisés.
objective-c
cocoa
nsinteger
Jeffrey
la source
la source
Réponses:
Ta da:
NSInteger
n'est rien de plus qu'un int 32/64 bits. (il utilisera la taille appropriée en fonction du système d'exploitation / de la plate-forme que vous utilisez)la source
Si vous souhaitez effectuer cette opération en ligne, il vous suffit de convertir
NSUInteger
ouNSInteger
en unint
:la source
NSInteger
valeur à la place d'unint
. Dans les deux cas, il ne s'agit pas d'une solution multiligne.Je ne sais pas sur les circonstances dans lesquelles vous avez besoin de convertir un
NSInteger
à unint
.NSInteger est juste un typedef:
NSInteger Utilisé pour décrire un entier indépendamment du fait que vous construisez pour un système 32 bits ou 64 bits.
Vous pouvez utiliser
NSInteger
n'importe quel endroit que vous utilisezint
sans le convertir.la source
Couramment utilisé dans UIsegmentedControl, «erreur» apparaît lors de la compilation en 64 bits au lieu de 32 bits, un moyen simple de ne pas la transmettre à une nouvelle variable est d'utiliser ces astuces, ajoutez (int) :
au lieu de :
la source