Junior — Middle
Каква е разликата между типа данни NSInteger и класа NSNumber в Objective-C?
sobes.tech AI
Отговор от AI
NSInteger — това е примитивен тип данни (typedef за int или long в зависимост от архитектурата), използван за съхраняване на цели числа. Той не е обект и работи на ниво стек.
NSNumber — това е клас-обвивка (обект), който позволява съхраняване на числови стойности (включително NSInteger, float, double и др.) под формата на обекти. Това е полезно, когато трябва да запазите число в колекции, които работят само с обекти, като NSArray или NSDictionary.
Пример:
NSInteger myInt = 42; // прост тип цяло число
NSNumber *myNumber = @(myInt); // обект-обвивка за числото
// Използване на NSNumber в масив
NSArray *array = @[myNumber];
// Получаване на стойност от NSNumber
NSInteger value = [myNumber integerValue];
Така NSInteger е основен числов тип, а NSNumber е обект, който инкапсулира число за използване в обектно-ориентиран контекст.