Ответ Брэда Ларсона совершенно верный. Чтобы уточнить это немного подробнее, вы должны явно «обернуть» типы необъектных номеров (например, int
, unsigned int
, double
, float
, BOOL
и т. Д.) В NSNumber
при работе с чем-либо, что ожидает объект.
Однако, с другой стороны, некоторые механизмы в Objective-C, такие как Key-Value Coding (KVC), автоматически сделают это для вас.
Например, если у вас есть @property
типа int
с именем intProperty
, и вы вызываете метод NSObject (NSKeyValueCoding)
valueForKey:
, такой как [ someObject valueForKey:@"intProperty" ]
, возвращаемый результат будет NSNumber *
, НЕ int
.
Честно говоря, меня не волнует необходимость переключения между объектными и необъектными типами (особенно struct
s и enum
s!) В Objective-C. Я бы предпочел, чтобы все воспринималось как объект, но, возможно, это только я. :)