Junior — Middle
Aký je rozdiel medzi dátovým typom NSInteger a triedou NSNumber v Objective-C?
sobes.tech AI
Odpoveď od AI
NSInteger — je primitívny dátový typ (typedef pre int alebo long v závislosti od architektúry), používaný na ukladanie celých čísel. Nie je to objekt a funguje na úrovni zásobníka.
NSNumber — je trieda obalovač (objekt), ktorá umožňuje ukladať číselné hodnoty (vrátane NSInteger, float, double a pod.) vo forme objektov. To je užitočné, keď je potrebné uložiť číslo v kolekciách, ktoré pracujú iba s objektmi, ako napríklad NSArray alebo NSDictionary.
Príklad:
NSInteger myInt = 42; // jednoduchý celočíselný typ
NSNumber *myNumber = @(myInt); // obalovací objekt pre číslo
// Použitie NSNumber v poli
NSArray *array = @[myNumber];
// Získanie hodnoty z NSNumber
NSInteger value = [myNumber integerValue];
Takže, NSInteger je základný číselný typ, a NSNumber je objekt, ktorý enkapsuluje číslo pre použitie v objektovo orientovanom kontexte.