Sobes.tech
Junior — Middle

¿En qué se diferencia el tipo de dato NSInteger de la clase NSNumber en Objective-C?

sobes.tech AI

Respuesta de la IA

NSInteger — es un tipo de dato primitivo (typedef para int o long dependiendo de la arquitectura), utilizado para almacenar valores enteros. No es un objeto y funciona a nivel de pila.

NSNumber — es una clase envoltorio (objeto) que permite almacenar valores numéricos (incluyendo NSInteger, float, double, etc.) en forma de objetos. Esto es útil cuando se necesita guardar un número en colecciones que solo trabajan con objetos, como NSArray o NSDictionary.

Ejemplo:

NSInteger myInt = 42; // tipo entero simple
NSNumber *myNumber = @(myInt); // envoltorio de objeto para el número

// Uso de NSNumber en un array
NSArray *array = @[myNumber];

// Obtener valor de NSNumber
NSInteger value = [myNumber integerValue];

Por lo tanto, NSInteger es un tipo numérico básico, y NSNumber es un objeto que encapsula un número para su uso en un contexto orientado a objetos.