Назад к вопросам
Локобанк
Junior — Middle
80
Чем отличается тип данных NSInteger от класса NSNumber в Objective-C?
Компании, где спрашивали
Ответ от нейросети
sobes.tech 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 — объект, инкапсулирующий число для использования в объектно-ориентированном контексте.