Sobes.tech
Junior — Middle

Care este diferența dintre tipul de date NSInteger și clasa NSNumber în Objective-C?

sobes.tech AI

Răspuns de la AI

NSInteger — este un tip de date primitiv (typedef pentru int sau long în funcție de arhitectură), utilizat pentru stocarea valorilor întregi. Nu este un obiect și funcționează la nivel de stivă.

NSNumber — este o clasă wrapper (obiect) care permite stocarea valorilor numerice (inclusiv NSInteger, float, double etc.) sub formă de obiecte. Acest lucru este util atunci când trebuie să păstrați un număr în colecții care funcționează doar cu obiecte, cum ar fi NSArray sau NSDictionary.

Exemplu:

NSInteger myInt = 42; // tip numeric simplu
NSNumber *myNumber = @(myInt); // obiect wrapper pentru număr

// Utilizarea NSNumber într-un array
NSArray *array = @[myNumber];

// Obținerea valorii din NSNumber
NSInteger value = [myNumber integerValue];

Prin urmare, NSInteger este un tip numeric de bază, iar NSNumber este un obiect care încapsulează un număr pentru utilizare în context orientat pe obiecte.