Класс NSArray может содержать только экземпляры других объектов Objective-C. К счастью, у Apple уже есть несколько типов объектов Objective C для инкапсуляции примитивных типов C. Например, NSNumber может инкапсулировать множество различных типов чисел C (целые числа, числа с плавающей запятой и т. Д.). NSValue может инкапсулировать произвольные структуры, CGPoints, указатели и т. Д. Таким образом, вы можете использовать NSNumber и float вместе с NSArray следующим образом:
NSArray * myArray;
NSNumber * myFloatObj = [NSNumber numberWithFloat:3.14];
myArray = [NSArray arrayWithObjects:myFloatObj, nil];
Затем вы можете получить исходное значение с плавающей точкой из первого NSNumber массива:
NSNumber * theNumber = [myArray objectAtIndex:0];
float theFloat = [theNumber floatValue];
Кроме того, вы можете превратить это в однострочник:
float theFloat = [[myArray objectAtIndex:0] floatValue];