Middle
Da li su standardne kolekcije nizova tipovi vrednosti i referentni tipovi?
sobes.tech АИ
Одговор од АИ
Nizovi (Array) u Swift-u su strukture (struct), a strukture su tipovi vrednosti (Value Types). Pri dodeljivanju ili prosleđivanju niza, pravi se njegova kopija.
Međutim, za optimizaciju performansi, sistem kopiranja nizova ima ponašanje Copy-on-Write. To znači da se prava kopija podataka niza dešava tek pri prvoj modifikaciji jedne od kopija. Do tada, obe kopije dele istu memoriju za skladištenje podataka.
Tipovi vrednosti: Struct, Enum, Int, String, Double, Bool. Tipovi referenci: Class, Function, Closure.
Primer koji ilustruje Copy-on-Write:
var initialArray = [1, 2, 3]
var copiedArray = initialArray // Još uvek nema pravu kopiju podataka
print(initialArray[0]) // 1
print(copiedArray[0]) // 1
copiedArray[0] = 10 // Ovde dolazi do prave kopije podataka
print(initialArray[0]) // 1 (originalni niz se nije promenio)
print(copiedArray[0]) // 10 (samo kopirana verzija se promenila)