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.