---
title: Типы данных
seo:
  title: Типы данных — IOS Developer
  description: Тема «Типы данных» для собеседования IOS Developer. Какие типы данных есть в Swift? В чём разница между классом и структурой?
---

[Все темы IOS Developer](/ios-developer)

## Какие типы данных есть в Swift? [#q-14bee738d69b81ffbadcfbfa49451e42]

В Swift существует несколько основных типов данных&#58;

1. <strong>Целочисленные типы данных</strong>&#58; <code>Int</code> (целые
   числа), <code>UInt</code> (беззнаковые целые числа), <code>Int8</code>,
   <code>Int16</code>, <code>Int32</code>, <code>Int64</code> (целые числа
   заданной битовой длины).

1. <strong>Вещественные типы данных</strong>&#58; <code>Float</code> (32-битное
   вещественное число одинарной точности), <code>Double</code> (64-битное
   вещественное число двойной точности).

1. <strong>Логический тип данных</strong>&#58; <code>Bool</code> (логические
   значения <code>true</code> или <code>false</code>).

1. <strong>Символьный тип данных</strong>&#58; <code>Character</code> (отдельный
   символ Unicode).

1. <strong>Строковый тип данных</strong>&#58; <code>String</code> (строка
   символов Unicode).

1. <strong>Опциональные типы данных</strong>&#58; <code>Optional</code>
   (позволяют представить отсутствие значения).

1. <strong>Коллекции</strong>&#58; <code>Array</code> (упорядоченная коллекция
   элементов), <code>Set</code> (неупорядоченная коллекция уникальных
   элементов), <code>Dictionary</code> (коллекция пар ключ-значение).

1. <strong>Tuple</strong> (кортежи) - группа значений, объединенных в одно
   составное значение.

1. <strong>Функциональные типы данных</strong>&#58; <code>Function</code> (тип
   данных для функций).

:::note[Ссылки для изучения]

1. [Типы данных в Swift](https://stfalcon.com/ru/blog/post/swift-basics-data-types)
   :::

---

## <strong>В чём разница между классом и структурой?</strong> [#q-14bee738d69b8111bbf9d70ab24d532e]

Основные различия между классом и структурой в Swift&#58;

1. <strong>Наследование</strong>&#58; Классы поддерживают наследование, что
   означает, что один класс может наследовать свойства и методы другого класса.
   Структуры не поддерживают наследование.

1. <strong>Передача по ссылке и по значению</strong>&#58; Объекты класса
   передаются по ссылке, что означает, что при передаче объекта класса в
   качестве параметра функции или присваивании его другой переменной передается
   ссылка на объект. В случае структур передается копия значения. Это означает,
   что изменения объекта класса будут отражены во всех его копиях, а изменения
   структуры будут ограничены только внутри области видимости, где происходит
   изменение.

1. Создание экземпляра&#58; Инициализатор без параметров создаётся автоматически при выполнении условий, в частности когда все хранимые свойства имеют начальные значения и не объявлены собственные инициализаторы. Структуры также могут получать memberwise-инициализатор; собственный инициализатор в теле структуры подавляет его автоматическое создание.

1. <strong>Управление памятью</strong>&#58; Объекты класса управляются с помощью
   автоматического управления памятью (ARC), в то время как структуры
   копируются, когда передаются в качестве параметра или присваиваются другой
   переменной.

1. <strong>Принадлежность к типу данных</strong>&#58; Классы являются ссылочными
   типами данных, в то время как структуры являются значениями типов данных.

:::note[Ссылки для изучения]

1. [Типы данных в Swift](https://stfalcon.com/ru/blog/post/swift-basics-data-types)
   :::

---

## <strong>Что представляют собой типы значений и ссылочные типы, и какие у них плюсы и минусы?</strong> [#q-14bee738d69b81f38418ca4d6cf15dc0]

Типы значений и ссылочные типы - это два основных способа организации данных в программировании.

{/* prettier-ignore */}
1. <strong>Типы значений</strong>&#58;

    - <strong>Представление</strong>&#58; Хранят свои данные непосредственно в памяти, где они были объявлены.

    - <strong>Примеры</strong>&#58; Структуры и перечисления в Swift.

    - <strong>Плюсы</strong>&#58;

        - Простота копирования&#58; При передаче типа значения в качестве параметра или присваивании его другой переменной создается копия данных.

        - Повышение безопасности&#58; Предотвращаются побочные эффекты, такие как неожиданное изменение данных.

    - <strong>Минусы</strong>&#58;

        - Дополнительные затраты на память&#58; Копирование данных может потребовать дополнительной памяти.

        - Проблемы с производительностью&#58; Могут возникать проблемы с производительностью при работе с большими объемами данных из-за копирования.

1. <strong>Ссылочные типы</strong>&#58;

    - <strong>Представление</strong>&#58; Хранят ссылку на место в памяти, где хранятся данные.

    - <strong>Примеры</strong>&#58; Классы в Swift.

    - <strong>Плюсы</strong>&#58;

        - Экономия памяти&#58; Передача ссылки на объект позволяет избежать дублирования данных.

        - Гибкость&#58; Можно обращаться к одному и тому же объекту из разных частей программы.

    - <strong>Минусы</strong>&#58;

        - Проблемы с безопасностью&#58; Могут возникать проблемы с безопасностью при множественном доступе к одному объекту.

        - Риск утечек памяти&#58; ARC освобождает объекты автоматически, но разработчик должен избегать циклов сильных ссылок и своевременно освобождать внешние ресурсы.

:::note[Ссылки для изучения]

1. [Типы данных в Swift](https://stfalcon.com/ru/blog/post/swift-basics-data-types)
   :::

---

## Что означают Any, AnyObject и nil в Swift? [#q-14bee738d69b81478e0ff41c0bb39fd6]

Разница между типами данных&#58;

- <code>Any</code>&#58; Может представлять любой тип, включая функции и типы
  данных.

- <code>AnyObject</code>&#58; Может представлять любой экземпляр класса
  (ссылочный тип).

- <code>nil</code>&#58; Специальное значение, указывающее на отсутствие
  значения.

:::note[Ссылки для изучения]

1. [Типы данных в Swift](https://stfalcon.com/ru/blog/post/swift-basics-data-types)
   :::

---

## <strong>Что такое</strong> <code>Value Types</code> <strong>и</strong> <code>Reference Types</code> <strong>в Swift и каковы их различия</strong> [#q-14bee738d69b814fbf74f23baa5e3fa3]

Различия между типами данных&#58;

- <code>Value Types</code>&#58; Типы данных, которые передаются по значению.
  Примеры&#58; структуры (<code>struct</code>), перечисления (<code>enum</code>
  ).

- <code>Reference Types</code>&#58; Типы данных, которые передаются по ссылке.
  Примеры&#58; классы (<code>class</code>).

:::note[Ссылки для изучения]

1. [Типы данных в Swift](https://stfalcon.com/ru/blog/post/swift-basics-data-types)
   :::
