Чем отличается тип данных NSInteger от класса NSNumber в Objective-C?

NSInteger — это примитивный тип данных (typedef для int или long в зависимости от архитектуры), используемый для хранения целочисленных значений. Он не является объектом и работает на уровне стека.

Короткий ответ

Что ответить на собеседовании

NSInteger — это примитивный тип данных (typedef для int или long в зависимости от архитектуры), используемый для хранения целочисленных значений. Он не является объектом и работает на уровне стека.

Подробный разбор

Ответ с пояснениями

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 — объект, инкапсулирующий число для использования в объектно-ориентированном контексте.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее