Sobes.tech
Назад к вопросам
Junior — Middle
82

Каковы отличия между типами данных по их семантике: значения и ссылки?

Компании, где спрашивали
AvitoAvito

Ответ от нейросети

sobes.tech AI

Типы данных по семантике делятся на типы значения (value types) и типы ссылки (reference types).

  • Типы значения хранят данные непосредственно. При присваивании или передаче в функцию копируется само значение. В iOS (Swift) примерами являются Int, Double, Bool, структуры (struct).

  • Типы ссылки хранят ссылку на область памяти, где лежат данные. При присваивании копируется ссылка, а не данные. Изменения через одну ссылку видны через другие. В Swift это классы (class), объекты.

Пример:

struct Point { var x: Int; var y: Int }
class Person { var name: String
  init(name: String) { self.name = name } }

var p1 = Point(x: 1, y: 2)
var p2 = p1
p2.x = 10
print(p1.x) // 1 — копия не изменилась

var person1 = Person(name: "Иван")
var person2 = person1
person2.name = "Пётр"
print(person1.name) // "Пётр" — ссылка на один объект

Понимание разницы важно для управления памятью и поведением объектов в приложении.