Sobes.tech
Junior — Middle

Mis vahe on andmetüübi NSInteger ja klassi NSNumber vahel Objective-C-s?

sobes.tech AI

Vastus AI-lt

NSInteger — see on primitiivne andmetüüp (typedef int või long arhitektuurist sõltuvalt), mida kasutatakse täisarvude väärtuste salvestamiseks. See ei ole objekt ja töötab virna tasemel.

NSNumber — see on klassi-ümbrise (objekt), mis võimaldab salvestada numbrilisi väärtusi (sh NSInteger, float, double ja teised) objektidena. See on kasulik, kui soovite salvestada arvu kollektsioonidesse, mis töötavad ainult objektidega, näiteks NSArray või NSDictionary.

Näide:

NSInteger myInt = 42; // lihtne täisarvu tüüp
NSNumber *myNumber = @(myInt); // objekti-ümbris arvule

// NSNumber kasutamine massiivis
NSArray *array = @[myNumber];

// Väärtuse saamine NSNumberist
NSInteger value = [myNumber integerValue];

Seega, NSInteger on põhitasemel arvutüüp, ja NSNumber on objekt, mis kapseldab arvu, et seda saaks kasutada objektorienteeritud kontekstis.