NSInteger is integer object. So surely there should be long object?
NSInteger and NSUInteger are platform specific, so on 32 bit system is declared as an int and on 64 bit system it is declared as a long.
NSInteger
NSUInteger