Барои чӣ истинодҳои заиф дар забони барномасозии Swift истифода мешаванд?
sobes.tech AI
Ҷавоб аз AI
Референтҳои заиф (weak references) дар Swift барои пешгирии доираҳои ишораҳои қавӣ (strong reference cycles) истифода мешаванд, ки метавонанд ба дарзмолшавии хотира оварда расонанд. Дар системаи ҳисобкунии автоматии ишораҳо (ARC), объектҳо дар хотира нигоҳ дошта мешаванд, то он даме, ки ишораҳои қавӣ дошта бошанд. Агар ду объект ба ҳам ишораҳои қавӣ дошта бошанд, онҳо ҳеҷ гоҳ озод намешаванд.
Референти заиф ба ҳисобкунии ишораҳои объект таъсир намерасонад, бинобар ин, агар ишораҳои қавӣ набошанд, объект озод мешавад ва референси заиф автоматӣ nil мешавад. Ин махсусан дар кор бо делегатҳо, closures ва объектҳои мутақобил муфид аст.
Масалан истифодаи референси заиф:
class Person {
var name: String
weak var apartment: Apartment? // референси заиф
init(name: String) {
self.name = name
}
}
class Apartment {
let unit: String
var tenant: Person? // референси қавӣ
init(unit: String) {
self.unit = unit
}
}
var john: Person? = Person(name: "John")
var unit4A: Apartment? = Apartment(unit: "4A")
john?.apartment = unit4A
unit4A?.tenant = john
john = nil // объекти Person озод мешавад, зеро apartment референси заиф аст
unit4A = nil
Инчунин, референсҳои заиф кӯмак мекунанд, ки аз дарзмолшавии хотира бо қатъ кардани доираҳои ишораҳои қавӣ пешгирӣ шавад.