Чӣ гуна истифодаи unowned ба идоракунии муҳлати зиндагии объект дар барномасозӣ таъсир мерасонад?
sobes.tech AI
Ҷавоб аз AI
Дар iOS (Swift), калидвожа unowned истифода мешавад барои эълон кардани истиноди заиф ба объект, ки ҳисобкунаки истинодро зиёд намекунад, аммо тахмин мезанад, ки объект дар давоми умри истинод вуҷуд хоҳад дошт.
Истифодаи unowned кӯмак мекунад, ки гирдоби истинодҳо (retain cycles) пешгирӣ карда шаванд, ки метавонанд ба дарзмолшавии хотира оварда расонанд. Баръакс ба weak, истиноди unowned интихобнопазир нест ва пас аз озод кардани объект nil намешавад, бинобар ин бояд танҳо дар ҳолате истифода шавад, ки кафолат дода шавад, ки объект дарозтар аз истинод вуҷуд хоҳад дошт.
Масалан:
class Person {
var name: String
init(name: String) { self.name = name }
var apartment: Apartment?
}
class Apartment {
let unit: String
unowned let tenant: Person
init(unit: String, tenant: Person) {
self.unit = unit
self.tenant = tenant
}
}
let john = Person(name: "John")
let apt = Apartment(unit: "4A", tenant: john)
john.apartment = apt
Дар ин ҷо, Apartment истиноди unowned ба Person нигоҳ медорад, то ки гирдоби (цикл) пешгирӣ шавад, ва тахмин мезанад, ки Person ҳамеша вуҷуд хоҳад дошт, то даме ки Apartment вуҷуд дорад. Агар Person пеш аз он нест карда шавад, дастрасӣ ба истиноди unowned дар вақти иҷрои барнома хато меорад.