Sobes.tech
Junior — Middle

Оё метавонед фаҳмонед, ки мафҳуми Release дар Objective-C чист ва нақши он дар идоракунии хотира чӣ аст?

sobes.tech AI

Ҷавоб аз AI

Дар Objective-C, усул release истифода мешавад барои идора кардани давраи зиндагии объектҳо дар модели идоракунии хотира бо ҳисобкунии истинодҳо (reference counting). Ҳар як объект дорои ҳисобкунаки истинодҳо мебошад, ки бо retain зиёд мешавад ва бо release кам мешавад. Вақте ки ҳисобкунак ба сифр мерасад, объект нобуд мешавад ва хотира озод карда мешавад.

Роли release ин кам кардани ҳисобкунаки истинодҳо ба объект, нишон додани он ки соҳибмулк ҳоло дигар ба объект ниёз надорад. Ин кӯмак мекунад, ки аз ҷорӣ шудани сӯрохиҳои хотира пешгирӣ шавад, бо озод кардани захираҳо вақте ки онҳо дигар заруранд.

Масалан:

NSObject *obj = [[NSObject alloc] init]; // ҳисобкунак = 1
[obj retain]; // ҳисобкунак = 2
[obj release]; // ҳисобкунак = 1
[obj release]; // ҳисобкунак = 0, объект нобуд мешавад

Муҳим аст, ки release-ро ҳамон қадар даъват кунед, ки retain ё alloc/init-ро, то ҳисобкунаро баробар нигоҳ доред ва аз сӯрохиҳои хотира ё нобудшавии барвақтӣ пешгирӣ кунед.