Подтвердить что ты не робот

В чем разница между Int и Int32 в Swift?

В Core Data вы можете хранить Int16, Int32, Int64, но он отличается от Int. В чем причина их существования, как вы их используете?

4b9b3361

Ответ 1

Согласно документации Swift

Int

В большинстве случаев вам не нужно выбирать конкретный размер целого числа для использования в вашем коде. Swift предоставляет дополнительный целочисленный тип Int, который имеет тот же размер, что и текущий размер слова текущей платформы:

На 32-битной платформе Int имеет тот же размер, что и Int32.

На 64-битной платформе Int имеет тот же размер, что и Int64.

Если вам не нужно работать с определенным размером целого числа, всегда используйте Int для целочисленных значений в вашем коде. Это помогает согласованности кода и совместимости. Даже на 32-битных платформах Int может хранить любое значение между -2, 147, 483, 648 и 2, 147, 483, 647 и достаточно велико для многих целочисленных диапазонов.

Ответ 2

Число, помещенное после "Int", является ссылкой на количество бит, которое оно использует. Когда вы используете int для чего-то действительно короткого или почти ненужного, например, количество запусков, количество объектов в списке, которое соответствует определенному параметру, обычно я использую UInt8, который является целым числом, которое имеет максимальное значение 256 (2 ^ 8) и минимальное значение 0, потому что оно без знака (это различие между UInt8 и Int8). Если он подписан, (или не имеет "U", префиксного переменной), то он может быть отрицательным. То же самое верно для Int16, Int32 и Int64. Бонус за использование типа типа меньшего размера не очень большой, поэтому вам действительно не нужно использовать их, если вы этого не хотите.

Ответ 3

При работе на ноутбуке или устройстве iOS с 32-разрядным или 64-разрядным процессором нет экономии производительности. Просто используйте Int. ЦП не просто использует 8 бит при использовании Int8, процессор будет использовать всю свою ширину бита независимо от того, что вы используете, потому что аппаратное обеспечение уже находится в чипе...

Теперь, если у вас есть 8-битный процессор, то использование Int32 потребует от компилятора сделать кучу backflips и волшебных трюков, чтобы получить 32-битный Int для работы

Ответ 4

  На 32-разрядных платформах размер Int совпадает с размером Int32, а на 64-разрядных платформах размер Int совпадает с размером Int64.

  • Int32: 4 байта: от −2147483648 до +2147483647
  • Int64: 8 байтов: от −9223372036854775808 до +9223372036854775807

Например, если вы делаете

Int(Date().timeIntervalSince1970 * 1000)

Это приводит к фатальной ошибке на iPhone 5 (32-битная арка):

Thread 1: Fatal error: Double value cannot be converted to Int because the result would be greater than Int.max 

Но на iPhone 5S (62-битная арка) все хорошо.

enter image description here

Очень хорошая матрица из http://iossupportmatrix.com/, где вы можете найти арку процессора для конкретного устройства.

Подробнее здесь