Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от 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) // "Пётр" — препратка към същия обект

Разбирането на разликата е важно за управлението на паметта и поведението на обектите в приложението.