Junior — Middle
Зәгип (unowned) шилтемелерди колдонуу менен байланышкан жагдайлар колдонмонун үзүлүшүнө алып келиши мүмкүнбү? Бир мисал келтириңиз.
sobes.tech AI
AIден жооп
Ооба, Swiftтеги алсыз (unowned) шилтемелерди колдонуу, эгер шилтемеленген объект алдын ала бошотулуп кетсе жана кийинчерээк ошол шилтемеге кирүүгө аракет жасалса, колдонмонун үзгүлтүккө учурашына алып келиши мүмкүн.
Unowned шилтемелер, объект дайыма бар деп эсептейт, шилтеменин жашагыча. Эгер андай болбосо, колдонмо "EXC_BAD_ACCESS" ката менен үзгүлтүккө учурайт.
Мисал:
class Person {
var apartment: Apartment?
}
class Apartment {
unowned let tenant: Person
init(tenant: Person) {
self.tenant = tenant
}
}
var john: Person? = Person()
john!.apartment = Apartment(tenant: john!)
john = nil // Person объекти бошотулат
// Эми apartment.tenant - алгач бошотулган объектке unowned шилтеме
// Ага кирүү каталарга алып келет
print(john!.apartment!.tenant) // каталар
Мындай каталардан сактануу үчүн, unowned шилтеменин объект бошотулгандан кийин колдонулбашына көз жеткізүү керек, же weak шилтемелерди колдонуу керек, алар объект бошотулгандан кийин nil болуп калат.