I know there are ways to extract C types from NSNumbers and
numerous functions in Math.h for performing calculations but why
doesn't NSNumber support calculations directly?
Because NSNumber is supposed to contain primitives in an array/
dictionary/set, not replace the primitives.
For example, say you have an NSArray of NSNumbers and you want to
convert them in-place to their nth root. If NSNumber supported math
functions, you could use NSArray's makeObjectsPerformSelector
method to do it without having to loop through each, extract the
value, get the root, and replace the number in the array.
There's nothing stopping you from writing your own method that does
this, is there?