Sobes.tech
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 е обект, който инкапсулира число за използване в обектно-ориентиран контекст.