Sobes.tech
Junior — Middle

Kāda ir atšķirība starp datu tipu NSInteger un klasi NSNumber Objective-C?

sobes.tech AI

Atbilde no AI

NSInteger — tas ir primitisks datu tips (typedef priekš int vai long atkarībā no arhitektūras), ko izmanto veselu skaitļu glabāšanai. Tas nav objekts un darbojas uz steka līmeņa.

NSNumber — ir klases apvalks (objekts), kas ļauj glabāt skaitliskās vērtības (ieskaitot NSInteger, float, double un citus) kā objektus. Tas ir noderīgi, ja nepieciešams saglabāt skaitli kolekcijās, kas darbojas tikai ar objektiem, piemēram, NSArray vai NSDictionary.

Piemērs:

NSInteger myInt = 42; // vienkāršs vesela skaitļa tips
NSNumber *myNumber = @(myInt); // objekta apvalks skaitlim

// NSNumber izmantošana masīvā
NSArray *array = @[myNumber];

// Vērtības iegūšana no NSNumber
NSInteger value = [myNumber integerValue];

Tādējādi, NSInteger ir pamatveida skaitlisks tips, bet NSNumber ir objekts, kas ietver skaitli, lai to varētu izmantot objektorientētā kontekstā.