What's the difference between NSNumber and NSInteger?

mk12 picture mk12 · Aug 16, 2009 · Viewed 59.7k times · Source

What's the difference between NSNumber and NSInteger? Are there more primitives like these that I should know about? Is there one for floats?

Answer

iKenndac picture iKenndac · Aug 16, 2009

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