Junior — Middle
Qual è la differenza tra il tipo di dato NSInteger e la classe NSNumber in Objective-C?
sobes.tech AI
Risposta dell'AI
NSInteger — è un tipo di dato primitivo (typedef per int o long a seconda dell'architettura), usato per memorizzare valori interi. Non è un oggetto e funziona a livello di stack.
NSNumber — è una classe wrapper (oggetto) che permette di memorizzare valori numerici (inclusi NSInteger, float, double, ecc.) come oggetti. Questo è utile quando si desidera conservare un numero in collezioni che lavorano solo con oggetti, come NSArray o NSDictionary.
Esempio:
NSInteger myInt = 42; // tipo intero semplice
NSNumber *myNumber = @(myInt); // wrapper oggetto per il numero
// Uso di NSNumber in un array
NSArray *array = @[myNumber];
// Ottenere il valore da NSNumber
NSInteger value = [myNumber integerValue];
Pertanto, NSInteger è un tipo numerico di base, e NSNumber è un oggetto che incapsula un numero per l'uso in un contesto orientato agli oggetti.