Junior — Middle
Swift кодунда `unowned` оператору качан колдонулат деп мисал келтире аласызбы?
sobes.tech AI
AIден жооп
Swiftтеги unowned оператору күчтүү шилтемени билдирбеген, бирок шилтемеленген объект дайыма бар деп эсептеген алсыз шилтемени жарыялоо үчүн колдонулат. Бул күчтүү шилтемелер циклин алдын алуу үчүн пайдалуу, мисалы, жабык циклдер менен иштөөдө же бири-бирине шилтемелеген объекттерде, анда бир объект башкасына караганда узак жашайт деп кепилдик берилет.
unowned колдонуу мисалы жабык циклде:
class Person {
let name: String
var apartment: Apartment?
init(name: String) {
self.name = name
}
lazy var printApartment = { [unowned self] in
if let apt = self.apartment {
print("\(self.name) батирде жашайт \(apt.number)")
} else {
print("\(self.name) батирге ээ эмес")
}
}
}
class Apartment {
let number: Int
unowned let tenant: Person
init(number: Int, tenant: Person) {
self.number = number
self.tenant = tenant
}
}
let john = Person(name: "John")
let apt1 = Apartment(number: 101, tenant: john)
john.apartment = apt1
john.printApartment() // Натыйжа: John батирде жашайт 101
Бул жерде, unowned Apartmentтен Personке шилтемеде колдонулат, күчтүү шилтемелер циклин алдын алуу үчүн, жана Person Apartmentтен узак жашайт деп болжолдонуп жатат.