Sobes.tech
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)