Junior — Middle
Da li svi tipovi podataka koji čuvaju vrednosti nužno koriste mehanizam kopiranja prilikom dodeljivanja ili prenosa?
sobes.tech АИ
Одговор од АИ
Nisu svi tipovi podataka koriste mehanizam kopiranja prilikom dodele ili prenosa. Na iOS-u (i Swift-u), razlikuju se tipovi vrednosti (value types) i tipovi referenci (reference types).
- Tipovi vrednosti (npr. strukture, enumeracije, osnovni tipovi poput Int, Double) se kopiraju prilikom dodele ili prenosa — kreira se nova kopija podataka.
- Tipovi referenci (npr. klase) kopiraju samo referencu na objekat, a ne sam objekat. Na taj način, više promenljivih može ukazivati na isti objekat u memoriji.
Primer u Swift-u:
struct Point { var x: Int; var y: Int }
class Person { var name: String
init(name: String) { self.name = name }
}
var p1 = Point(x: 0, y: 0)
var p2 = p1 // kopira vrednost
p2.x = 10
print(p1.x) // 0
var person1 = Person(name: "Alice")
var person2 = person1 // kopira referencu
person2.name = "Bob"
print(person1.name) // Bob
Dakle, mehanizam kopiranja se primenjuje samo na tipove vrednosti, dok tipovi referenci koriste prenos referenci.