Когда вы используете #define MAXIMUM_SCALE 10
, вы определяете целочисленную константу, а не число с плавающей точкой.Я предполагаю, что ваш код компилируется для x86-64.В этой архитектуре переменные с плавающей запятой и целочисленные переменные передаются через регистры разных типов.Поскольку при втором вызове NSLog
не используются никакие аргументы с плавающей запятой, значение из предыдущего вызова все еще будет в регистре, который используется для получения значения, что означает, что вы каждый раз получаете значение из предыдущего вызова.Вы должны получить предупреждение компилятора на втором NSLog
о том, что аргументы не соответствуют переданному формату.Вы можете исправить это, сказав компилятору, что MAXIMUM_SCALE
должно быть с плавающей запятой.
#define MAXIMUM_SCALE 10.0f
Десятичное число говорит компилятору, что вы хотите число с плавающей запятой вместо целого числа, а f
сообщаеткомпилятор для использования типа float
вместо double
.