NSNumber - это объектное представление числа. Я использую его при хранении чисел в классе коллекции, потому что они могут содержать только указатели объектов.
Так что в вашем примере, который нуждается в счетчике, он, вероятно, излишний.
NSInteger - это просто целое число, определенное по типу для обеспечения безопасности для 32- и 64-разрядных программ, которое рекомендуется Apple для использования вместо int
. Это не объект. Это, вероятно, то, что вам нужно для счетчика (на самом деле NSUInteger, который unsigned int
) может быть лучше.
Что касается того, чтобы сделать примитивы доступными для всего вашего класса - хорошо, если вы объявите его в заголовке как iVar, он все равно будет доступен в вашем классе. @property
и @synthesize
- это просто способы Objective-C 2.0 объявить их как свойства, которые можно увидеть (и, возможно, изменить) за пределами вашего класса в соответствии с KVC / KVO. Примитивные типы могут использоваться в качестве свойств с использованием одного и того же синтаксиса @property
и @synthesize
.