NSNumber
объекты могут содержать целые числа, числа с плавающей запятой, двойные числа и т. Д.
Подход Бена (по сравнению с NSNumber
intValue
) очень быстр и прост для чтения, но он работает правильно, только если вы можете гарантировать, что myNumber
всегда находится в диапазоне int
(и всегда будет быть, даже после будущих изменений кода).
По этой причине ваш подход на самом деле лучше, если вы не знаете точный тип myNumber
.
// This will work regardless if myNumber is an int, double etc.
[myNumber isEqualToNumber:[NSNumber numberWithInt:0]]
Если сравнивать с большими фиксированными числами или числами с плавающей запятой, вам все равно придется идти по этому пути.
Кроме того, последние версии XCode будут правильно предупреждать вас, если вы попытаетесь создать NSNumber с неправильным типом, который может помочь обнаружить проблемы на раннем этапе:
![Xcode 6.1.3 implicit conversion warning NSNumber](https://i.stack.imgur.com/AEcPH.png)