Назад к вопросам
JuniorТеорияЧасто
Что выведет программа (строки через пробел)?
class Person {}
class Flat {
weak var tenant: Person?
}
var anna: Person? = Person()
let flat = Flat()
flat.tenant = anna
print(flat.tenant == nil)
anna = nil
print(flat.tenant == nil)false true
- Ждать
false false, считая, чтоweak-ссылка держит объект. Она не прибавляет к счётчику, поэтомуanna = nilосвобождает человека, иtenantстановитсяnil. - Ждать аварийного завершения, путая
weakсunowned.weak-ссылка на освобождённый объект равнаnil, и программа работает дальше.
- Что выведет программа, если объявить
tenantбезweak? - Что произойдёт, если написать
flat.tenant = Person()вместоanna?