Sobes.tech
Junior — Middle

Qual é a diferença entre o tipo de dado NSInteger e a classe NSNumber em Objective-C?

sobes.tech IA

Resposta da IA

NSInteger — é um tipo de dado primitivo (typedef para int ou long dependendo da arquitetura), usado para armazenar valores inteiros. Não é um objeto e funciona ao nível da pilha.

NSNumber — é uma classe de envoltório (objeto) que permite armazenar valores numéricos (incluindo NSInteger, float, double, etc.) como objetos. Isso é útil quando é necessário guardar um número em coleções que trabalham apenas com objetos, como NSArray ou NSDictionary.

Exemplo:

NSInteger myInt = 42; // tipo inteiro simples
NSNumber *myNumber = @(myInt); // objeto envoltório para o número

// Uso de NSNumber em uma matriz
NSArray *array = @[myNumber];

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

Portanto, NSInteger é um tipo numérico básico, e NSNumber é um objeto que encapsula um número para uso em um contexto orientado a objetos.