Junior — Middle
Kuo skiriasi duomenų tipas NSInteger nuo klasės NSNumber Objective-C?
sobes.tech AI
Atsakymas iš AI
NSInteger — tai primityvus duomenų tipas (typedef int arba long priklausomai nuo architektūros), naudojamas sveikųjų skaičių reikšmėms saugoti. Jis nėra objektas ir veikia stovo lygyje.
NSNumber — tai apvalkalo klasė (objektas), leidžianti saugoti skaitines reikšmes (įskaitant NSInteger, float, double ir kt.) kaip objektus. Tai naudinga, kai reikia išsaugoti skaičių kolekcijose, kurios dirba tik su objektais, pvz., NSArray arba NSDictionary.
Pavyzdys:
NSInteger myInt = 42; // paprastas sveikojo skaičiaus tipas
NSNumber *myNumber = @(myInt); // objektinis apvalkalo tipas skaičiui
// Naudojimas NSNumber masyve
NSArray *array = @[myNumber];
// Gauti reikšmę iš NSNumber
NSInteger value = [myNumber integerValue];
Taigi, NSInteger yra pagrindinis skaitmeninis tipas, o NSNumber — objektas, kuris įpakuoja skaičių, skirtą naudoti objektų kontekste.