Если вы разбираете это, это значит, что вам задавали данный вопрос на любом из собеседований по подготовке iOS, которые вы посетили, которые могли либо не могли пойти вашим маршрутом, не беспокойтесь, я тут, чтобы дать вам все, что имеет значение. по данной теме.
Не только лишь для собеседования, но также и как создатель iOS, применяющий Свифт в роли языка программирования, мы должны знать это, и познание этого лишь сделает нас самым лучшим разработчиком iOS, и, в конечном счете, это то, что имеет значение. абсолютное большинство.
Вид сноски:
Образец справочного вида применяет одну копию данных. Это значит, что если вы создаете образец справочного вида и ставите его неустойчивой, и в случае если вы сообщаете данную неустойчивую функции либо если вы ставите данную неустойчивую другой неустойчивой, вы просто сообщаете сноску на только-только сделанный образец, и в случае если вы попробуйте получить доступ и поменять из любого места, применяя данную сноску, подлинный образец будет изменен.
Вместе с классами, функции и замыкания считаются справочными видами.
Каждый образец этого вида выполняет свежую копию данных всякий раз, когда они передаются в коде. И каждый образец сберегает при себе эксклюзивный набор данных.
Представьте, что вы сделали образец вида значения, и в случае если вы передадите данный образец, будет сделана иная копия, и она будет передана, из-за этого, если вы внесете изменения в представленную копию, начальный образец не будет иметь никаких перемен.
Простые типы данных, такие как Int, String, Double, и типы данных Свифт, такие как Array, Dictionary, Set, Enum, Tuple, считаются видами значений.
Где мне применять класс и где применять структуры? Когда вам необходима сопоставимость с Objective-C в вашем дополнении. Это значит, что вы работаете над планом, в котором вам надо предложить собственный мгновенный код среде Objective-C, возможно и напротив.
И когда вам надо контролировать тождественность имитируемых данных. Это преимущественно означает, что если вы сообщаете данные из одного класса во много классов, и в случае если доступ к вашим данным проводится в многопоточной среде, и вы желаете предохранить тождественность своем имени, можно применять классы. больше информации по теме class vs struct можно найти на сайте amarozka.dev.
Что же, документация Apple говорит, что просто применяйте Structs изначально. Означает, что если вы верите, что можете добиться той же функциональности, применяя которую вы планировали для классов, тогда вы также можете применять структуры, с условием, что вы не тревожитесь о пребывании вашей идентичности ваших данных и вы не можете взаимодействия с Objective-C. в вашем дополнении.
И для достижения данной функциональности можно применять структуры совместно с протоколами. Мы лишь на одно последнее осложнение от окончания нашей темы. А это так:
Расположение памяти классов и строений;
Классы справочных типов лежат в памяти кучи;
Структуры типов значений лежат в стековой памяти;
Груда необходимо за расположением спортивной памяти, а магазин необходимо за расположением неподвижной памяти.
Для получения специальной информации о постоянном и динамическом расположении памяти можно проверить данную статью на StackOverFlow.