2015-08-13 5 views
2

в моем приложении для IPhone Я передаю некоторые значения (временные метки) в библиотеку C++ как int64_t. Перед этим я бросаю значение из NSArray, где они хранятся в виде double, чтобы int64_t как и в .mm файл:Странные значения в отладочном представлении в XCode

int64_t f4 = (int64_t)[arr objectAtIndex:0]; 

Проблемы вы можете видеть на картинке (ссылка) является, что проявленным выбранным значение от переменной f4 (слева) не совпадает с ее напечатанным значением справа. Кроме того, если я сравниваю VARS f1 и f4, f4 должно быть больше, чем f1, относительно сохраненных значений, но это не так. Var f1 возвращается из функции внутри библиотеки, а в окне «Отладка» отображается правое значение.

Screenshot

ответ

2

NSArray (и все классы коллекций Objective-C) могут содержать только объекты. Это означает, что если вы хотите хранить числа в коллекции, их нужно обернуть в объект NSNumber. Например:

[arr addObject:@(number)]; 

и получить значение:

int64_t value = [arr[index] longLongValue]; 

Однако, чтобы ответить на этот вопрос, то значения, которые вы видите, вероятно, адреса NSNumber объектов, а не значения, содержащиеся в них.

Смежные вопросы