Middle — Middle+
Може ли да се счита слабата препратка за опционална или се държи по различен начин?
sobes.tech AI
Отговор от AI
Слабата връзка в Swift е връзка, която не увеличава брояча на препратките към обекта, към който сочи. Тя винаги се обявява като опционална, защото обектът, към който се отнася, може да бъде изтрит от паметта, и в този случай слабата връзка автоматично става nil.
Тоест, слабата връзка се държи като опционал: може да съдържа стойност или nil. Това е важно, за да се избегне достъп до вече освободен обект.
Пример:
class Person {
var name: String
init(name: String) { self.name = name }
}
var person: Person? = Person(name: "Alex")
weak var weakPerson: Person? = person
print(weakPerson?.name) // Optional("Alex")
person = nil
print(weakPerson?.name) // nil, тъй като обектът е изтрит
По този начин, слабата връзка винаги е опционална и автоматично става nil при изтриване на обекта.