Junior — Middle
Mi a különbség az NSInteger adattípus és az NSNumber osztály között az Objective-C-ben?
sobes.tech MI
Válasz az MI-től
Az NSInteger egy primitív adattípus (typedef az int vagy long típushoz az architektúrától függően), amely egész számok tárolására szolgál. Nem objektum, és a verem szintjén működik.
Az NSNumber egy wrapper osztály (objektum), amely lehetővé teszi numerikus értékek (beleértve az NSInteger, float, double stb.) objektumként való tárolását. Ez hasznos, amikor számokat kell tárolni olyan kollekciókban, amelyek csak objektumokat kezelnek, például az NSArray vagy NSDictionary.
Példa:
NSInteger myInt = 42; // egyszerű egész típus
NSNumber *myNumber = @(myInt); // objektum-wrapper a számhoz
// NSNumber használata tömbben
NSArray *array = @[myNumber];
// Érték lekérése NSNumber-ból
NSInteger value = [myNumber integerValue];
Tehát az NSInteger egy alapvető numerikus típus, míg az NSNumber egy objektum, amely egy számot zár be, és objektum-orientált környezetben való használatra készült.