DevPrep

Все темы › Современный Swift

value type vs reference type — как выбирать?

Middle PRO

Суть

struct Point: Sendable {        // value-тип без ссылок — Sendable бесплатно
    var x: Double, y: Double
}
final class Canvas {            // идентичность: один холст, много ссылок
    var points: [Point] = []
}

var a = Point(x: 0, y: 0)
var b = a                        // копия
b.x = 1
print(a.x, b.x)                  // 0.0 1.0

let c1 = Canvas()
let c2 = c1                      // та же ссылка
c2.points.append(a)
print(c1.points.count)           // 1

struct Model {                   // ловушка: value-тип с классом внутри
    var canvas = Canvas()        // копии Model делят один Canvas
}

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store