Middle
Sú štandardné kolekcie polí typmi hodnôt a referenčnými typmi?
sobes.tech AI
Odpoveď od AI
Polia (Array) v jazyku Swift sú štruktúry (struct), a štruktúry sú typy hodnôt (Value Types). Pri priraďovaní alebo odovzdávaní poľa sa vytvorí jeho kópia.
Avšak, na optimalizáciu výkonu, systém kopírovania poľa má správanie Copy-on-Write. To znamená, že skutočná kópia dát poľa nastáva až pri prvej úprave jednej z kópií. Do tej doby obe kópie zdieľajú rovnaké uloženie dát.
Typy hodnôt: Struct, Enum, Int, String, Double, Bool. Typy odkazov: Class, Function, Closure.
Príklad, ktorý ilustruje Copy-on-Write:
var initialArray = [1, 2, 3]
var copiedArray = initialArray // Ešte nemá skutočnú kópiu dát
print(initialArray[0]) // 1
print(copiedArray[0]) // 1
copiedArray[0] = 10 // Tu dochádza ku skutočnej kópii dát
print(initialArray[0]) // 1 (pôvodný pole sa nezmenil)
print(copiedArray[0]) // 10 (len skopírovaná verzia sa zmenila)