What's the difference between NSNumber and NSInteger? Are there more primitives like these that I should know about? Is there one for floats?
Example# The NSInteger is just a typedef for either an int or a long depending on the architecture. The same goes for a NSUInteger which is a typedef for the unsigned variants.
NSNumber is a subclass of NSValue that offers a value as any C scalar (numeric) type. It defines a set of methods specifically for setting and accessing the value as a signed or unsigned char , short int , int , long int , long long int , float , or double or as a BOOL .
NSNumber
is a class, not a primitive, and is used when you need to put raw numbers into dictionaries, arrays, or otherwise encapsulate them. NSInteger
, NSUInteger
, CGFloat
, etc are simple types and correspond (on 32-bt systems like the iPhone) to int
, unsigned int
and float
.
As a general rule, if you need to store a number somewhere, use NSNumber
. If you're doing calculations, loops, etc, use NSInteger
, NSUInteger
or CGFloat
.
You can wrap an NSInteger
into an NSNumber
:
NSNumber *aNumber = [NSNumber numberWithInteger:21];
... and get it back:
NSInteger anInteger = [aNumber integerValue];
You can find out more info here: http://iosdevelopertips.com/cocoa/nsnumber-and-nsinteger.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With