Sobes.tech
Junior — Middle

Koja je razlika između tipa podataka NSInteger i klase NSNumber u Objective-C?

sobes.tech АИ

Одговор од АИ

NSInteger — to primitivni tip podataka (typedef za int ili long u zavisnosti od arhitekture), koji se koristi za skladištenje celobrojnih vrednosti. Nije objekat i radi na nivou steka.

NSNumber — je klasa-omotac (objekat) koja omogućava skladištenje numeričkih vrednosti (uključujući NSInteger, float, double i dr.) u obliku objekata. Ovo je korisno kada je potrebno sačuvati broj u kolekcijama koje rade samo sa objektima, poput NSArray ili NSDictionary.

Primer:

NSInteger myInt = 42; // jednostavan celobrojni tip
NSNumber *myNumber = @(myInt); // objekat-omotac za broj

// Korišćenje NSNumber u nizu
NSArray *array = @[myNumber];

// Dobijanje vrednosti iz NSNumber
NSInteger value = [myNumber integerValue];

Dakle, NSInteger je osnovni numerički tip, a NSNumber je objekat koji inkapsulira broj za korišćenje u objektno-orijentisanom kontekstu.