1.22. Allocating and Making Use of Numbers
Problem
You need to use integral values or encapsulate numbers in objects.
Solution
Use NSNumber for an
object-oriented approach to handling numbers. If you require simple
numbers (non-objects), use NSInteger to hold signed (positive and
negative) values, NSUInteger to
hold unsigned (only positive or zero) values, and CGFloat and double to hold floating point values.
Discussion
Just as we place strings inside instances of NSString, we can place numbers inside
instances of NSNumber. Why, you
might ask? The answer is simple: to allow an object to carry the value
of our numbers so that we can save this value to disk easily, load it
from disk, and simply allow a single object to carry signed and
unsigned integral and floating point values, without the need for
typecasting or defining multiple variables. The possibilities are
virtually endless.
Let’s have a look at constructing instances of NSNumber:
NSNumber *signedNumber = [NSNumber numberWithInteger:-123456]; NSNumber *unsignedNumber = [NSNumber numberWithUnsignedInteger:123456]; NSNumber *floatNumber = [NSNumber numberWithFloat:123456.123456f]; NSNumber *doubleNumber = [NSNumber numberWithDouble:123456.1234567890];
Just as we placed signed and unsigned integers and floating
point values into an instance of NSNumber class, we can retrieve those values
back using some really handy instance methods of NSNumber class, as shown here:
NSNumber *signedNumber = [NSNumber numberWithInteger:-123456]; NSNumber ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access