Junior — Middle
Objective-C'da NSInteger ma'lumot turi va NSNumber sinfi o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
NSInteger — bu primitiv ma'lumot turi (typedef uchun int yoki long arxitekturaga qarab), butun sonlarni saqlash uchun ishlatiladi. Bu ob'ekt emas va stack darajasida ishlaydi.
NSNumber — bu ob'ekt bo'lib, raqamli qiymatlarni (shu jumladan NSInteger, float, double va boshqalar) ob'ekt shaklida saqlash imkonini beradi. Bu, masalan, NSArray yoki NSDictionary kabi ob'ektlar bilan ishlaydigan kolleksiyalarda raqamni saqlash uchun foydalidir.
Misol:
NSInteger myInt = 42; // oddiy butun son turi
NSNumber *myNumber = @(myInt); // raqam uchun ob'ekt-qarshi
// NSNumber ni massivda ishlatish
NSArray *array = @[myNumber];
// NSNumber dan qiymat olish
NSInteger value = [myNumber integerValue];
Shunday qilib, NSInteger asosiy raqamli tur, NSNumber esa raqamni ob'ektga aylantiradigan ob'ekt bo'lib, ob'ektga yo'naltirilgan kontekstda foydalaniladi.