Por exemplo, ao passar uma value
mensagem para uma NSInteger
instância como esta
[a value]
isso causa um EXC_BAD_ACCESS.
Então, como converter um NSInteger
para int
?
Se for relevante, apenas pequenos números <32 são usados.
objective-c
cocoa
nsinteger
Jeffrey
fonte
fonte
Respostas:
Ta da:
NSInteger
nada mais é do que um int de 32/64 bits. (ele usará o tamanho apropriado com base em qual sistema operacional / plataforma você está executando)fonte
Se você quiser fazer isso embutido, apenas transmita o
NSUInteger
ouNSInteger
para umint
:fonte
NSInteger
valor no lugar de umint
. Em nenhum dos casos é uma solução multilinha.Não tenho certeza sobre as circunstâncias em que você precisa converter um
NSInteger
em umint
.NSInteger é apenas um typedef:
NSInteger Usado para descrever um número inteiro independentemente de você estar construindo para um sistema de 32 ou 64 bits.
Você pode usar
NSInteger
qualquer lugar que usarint
sem convertê-lo.fonte
Normalmente usado em UIsegmentedControl, "erro" aparece ao compilar em 64 bits em vez de 32 bits, uma maneira fácil de não passá-lo para uma nova variável é usar estas dicas, add (int) :
ao invés de :
fonte