DevPrep

Все темы › Основные понятия программирования

Объект

Junior

Суть

Объект — экземпляр класса, живущий в куче: у него есть состояние (значения свойств), поведение (методы) и идентичность — адрес в памяти, по которому его можно отличить от другого объекта с теми же данными. В Swift объектом в строгом смысле является экземпляр class (и actor); экземпляр struct/enum называют значением — у него нет идентичности, только равенство.

Объект vs значение

final class Counter {
    var value = 0
    func increment() { value += 1 }
}

let a = Counter()
let b = a                 // вторая ссылка на ту же сущность
b.increment()
print(a.value)            // 1
print(a === b)            // true — одна идентичность

struct Point: Equatable { var x = 0 }
let p1 = Point()
var p2 = p1               // независимая копия
p2.x = 5
print(p1 == p2)  // false — у значений есть равенство, но нет идентичности

Что ещё важно

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

Можете ли вы объяснить, когда нужна идентичность (общий изменяемый ресурс: соединение, кэш, контроллер) и когда достаточно значения (модель данных, DTO, координаты). Правильный ответ по Apple: по умолчанию struct, class — когда нужны identity, наследование или совместимость с Objective-C.

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

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

Скачать DevPrep в App Store