NSInteger se sinónimo de largo integer.What sigue es como se define NSInteger:
#if __LP64__ || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif
NSNumber es una clase Objective-C, una subclase de NSValue para ser específico. Puede crear un objeto NSNumber a partir de un carácter firmado o sin signo, short int, int, long int, long long int, float, double o BOOL
Una de las principales distinciones es que puede usar NSNumber en colecciones, como NSArray, donde se requiere un objeto. Por ejemplo, si es necesario agregar un flotador en un NSArray, primero tendría que crear un objeto NSNumber del flotador:
float percentage = 40.5;
... // Crear un objeto NSNumber, que ahora se puede insertar en un NSArray
NSNumber *percentageObject = [NSNumber numberWithFloat:percentage];
Su título es incorrecto - de acuerdo a su código de ejemplo, está utilizando una NSMutableDictionary, no un NSMutableArray. –
He editado el título. De todos modos, el problema también puede surgir con NSMutableArray y con cualquier colección en general. – mouviciel