Должен ли я использовать NSNumber вместо основных типов чисел C? - PullRequest
9 голосов
/ 18 февраля 2011

В чем преимущество использования NSNumber из Foundation Framework вместо базовых типов C (int, float, double)?

Использование NSNumber:

NSNumber *intNumber;
NSInteger myInt;
intNumber = [NSNumber numberWithInteger: 100];
myInt = [intNumber integerValue];

Использование чистого C:

int intNumber;
intNumber = 100;

Кажется, намного проще и экономичнее в использовании C.

Я знаю, что NSNumber является типом объекта (или класса?), Но зачем мне использовать их вместо простых переменных C? Когда я должен их использовать?

Ответы [ 3 ]

18 голосов
/ 18 февраля 2011

Цель NSNumber - просто упаковать примитивные типы в объекты (типы указателей), чтобы их можно было использовать в ситуациях, когда для работы требуются значения типа указателя.

Один общий пример: у вас естьиспользовать NSNumber, если вы хотите сохранить числовые значения в сущностях базовых данных.

Вы можете и должны использовать примитивы для вычислений (кроме десятичных, в этом случае вы используете NSDecimal или NSDecimalNumber).

3 голосов
/ 18 февраля 2011

Если вам нужно передать число как объект, используйте NSNumber.

Если вам нужно выполнить арифметические операции, вы можете использовать int и double.Если вы не хотите беспокоиться о проблемах с 32/64 битами, вы можете использовать NSInteger и CGFloat.

0 голосов
/ 18 февраля 2011

Поскольку при передаче параметров с определенными объектами использование базового типа данных не будет работать. Кроме того, класс NSNumber предоставляет вам возможности для быстрого преобразования значений в другие типы данных.

...