DevPrep

Все темы › Объектно-ориентированное программирование (ООП)

Объекты и ссылки

Junior

Суть

В классическом ООП «объект» почти всегда означает ссылочный тип: переменная хранит адрес, несколько переменных могут указывать на один объект, изменение через одну видно через другую. В Swift это только половина картины: есть reference types (class, actor, замыкания) и value types (struct, enum, кортежи), и выбор между ними — ключевое проектное решение.

Пример

final class Node { var value: Int; init(_ v: Int) { value = v } }
struct Point { var x: Int }

let n1 = Node(1)
let n2 = n1              // same object, retain count 2
n2.value = 42
print(n1.value)          // 42 — shared state
print(n1 === n2)         // true — identity, not equality

var p1 = Point(x: 1)
var p2 = p1              // independent copy
p2.x = 42
print(p1.x)              // 1

final class Parent { var child: Child? }
final class Child { weak var parent: Parent? }   // breaks the cycle
let parent = Parent()
parent.child = Child()
parent.child?.parent = parent

Ссылочные типы

Значимые типы

На что смотрит интервьюер

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

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

Скачать DevPrep в App Store