Sobes.tech
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.