Sobes.tech
Junior — Middle

Роли ёдгирии ишораҳои заиф (weak) ва беҳуқуқ (unowned) дар идораи хотира дар забонҳои барномасозӣ чист?

sobes.tech AI

Ҷавоб аз AI

Референсҳои заиф (weak) ва беҳуқуқ (unowned) барои идоракунии хотира ва пешгирии референсҳои циклӣ, ки метавонанд ба дарзмолшавии хотира оварда расонанд, истифода мешаванд.

  • Референсҳои weak: инҳо референсҳое мебошанд, ки шумораи референсҳоро ба объект зиёд намекунанд. Агар объекте, ки ба он ишора мекунад, хориҷ карда шавад, референси weak автоматӣ nil мешавад (дар Swift). Ин барои пешгирӣ кардани циклҳои қавӣ, масалан, байни делегат ва соҳиби он, кӯмак мекунад.

  • Референсҳои unowned: низ шумораи референсҳоро зиёд намекунанд, аммо тахмин мезананд, ки объект дар вақти истифодаи референс ҳамеша вуҷуд дорад. Агар объект аллакай хориҷ карда шавад, дастрасӣ ба референси unowned хатогӣ (crash) ба вуҷуд меорад. Онҳо вақте истифода мешаванд, ки давраи ҳаёти объекти ишорашуда кафолат дода шудааст, ки дарозтар аз референс аст.

Масал дар Swift:

class Person {
    var apartment: Apartment?
}

class Apartment {
    weak var tenant: Person?  // weak, барои пешгирӣ кардани цикл
}

Ин ҷо, референси weak аз нигоҳ доштани объект Person дар хотира, агар он дигар зарур набошад, пешгирӣ мекунад.