Junior — Middle
Масалан, дар коди Swift кай вақт оператори `unowned` истифода мешавад, мисол дода метавонед?
sobes.tech AI
Ҷавоб аз AI
оператори unowned дар Swift барои эълон кардани истиноди суст истифода мешавад, ки опсионалӣ нест ва тахмин мезанад, ки объекте, ки ба он ишора мекунад, ҳамеша ҳангоми дастрасӣ вуҷуд дорад. Ин барои пешгирии циклҳои қавии истинодҳо муфид аст, масалан, вақте ки бо пӯшидаҳо ё объектҳое кор мекунед, ки ба ҳамдигар ишора мекунанд, вақте ки яке аз объектҳо кафолат медиҳад, ки дарозтар аз дигаре зиндагӣ мекунад.
Масалан истифодаи 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 зиндагӣ мекунад.