В чем разница между Int и Int32 в Swift?
В Core Data
вы можете хранить Int16
, Int32
, Int64
, но он отличается от Int
. В чем причина их существования, как вы их используете?
Ответы
Ответ 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/, где вы можете найти арку процессора для конкретного устройства.
Подробнее здесь